STM32的FSMC

2023-11-11

FSMC之LCD彩屏学习

 

彩屏的驱动这里主要用到的是8080并口接口, 彩屏这里有区分带有控制器和不带控制器的,80并口有如下一些信号线:

CS :片选信号

WR :写数据

RD :读数据

RST:复位

RS :命令/数据标志(0:读写命令   1:读写数据)

 

80并口读写过程:

①:根据要选择写入或读取数据的类型,设置RS                    

   RS :命令/数据标志(0:读写命令   1:读写数据))

②:拉低片选信号

③:根据是读数据还是写数据来设置RD/WR为低,然后:

     RD 的上升沿, 使数据锁存到数据线(D[7:0])上;

     WR 的上升沿,使数据写入;

 

                             80并口写数据

 

 

                               80 并口读数据

 

STM32FSMC

FSMC,即灵活的静态存储控制器,能够与同步或异步存储器和 16 PC 存储器卡连接,STM32F4 FSMC 接口支持包括 SRAMNAND FLASHNOR FLASH PSRAM 等存储器。

所有的外部存储器共享地址、数据和控制信号,但有各自的片选信号。FSMC一次只能访问一个外部器件。

 

STM32的FSMC主要功能:(详情看手册)

● 支持对同步器件(NOR Flash 和 PSRAM)的突发模式访问

● 8 或 16 位宽的数据总线

● 每个存储区域有独立的片选控制

● 每个存储区域可独立配置

● 可对时序进行编程,以支持各种器件

 

FSMC 包含四个主要模块:

AHB 接口(包括 FSMC 配置寄存器)

NOR Flash/PSRAM 控制器

NAND Flash/PC 卡控制器

● 外部器件接口

 

这里我们介绍下为什么可以把 TFTLCD 当成 SRAM 设备用:首先我们了解下外部 SRAM的连接, 外部 SRAM 的控制一般有: 地址线 (如 A0~A18) 、 数据线 (如 D0~D15) 、 写信号 (WE) 、读信号 (OE) 、 片选信号 (CS) , 如果 SRAM 支持字节控制, 那么还有 UB/LB 信号。  TFTLCD的信号包括:RS、D0~D15、WR、RD、CS、RST 和 BL 等,其中真正在操作 LCD 的时候需要用到的就只有:RS、D0~D15、WR、 RD 和 CS。 其操作时序和 SRAM的控制完全类似,唯一不同就是 TFTLCD 有 RS 信号,但是没有地址信号。TFTLCD 通过 RS 信号来决定传送的数据是数据还是命令,本质上可以理解为一个地址信号,比如我们把 RS 接在 A0 上面,那么当 FSMC 控制器写地址 0 的时候,会使得 A0 变为 0,对 TFTLCD 来说, 就是写命令。 而 FSMC 写地址 1 的时候, A0 将会变为 1, 对 TFTLCD 来说,就是写数据了。这样,就把数据和命令区分开了,他们其实就是对应 SRAM 操作的两个连续地址。

外部器件地址映射

FSMC的角度,外部存储器被划分为4个固定大小的存储区域,每个区域的大小为256MB,如下图:


● 存储区域 1 可连接多达 4 个 NOR Flash 或 PSRAM 存储器器件。此存储区域被划分为 4 个

NOR/PSRAM 区域,带 4 个专用片选信号。

● 存储区域 2 和 3 用于连接 NAND Flash 器件(每个存储区域一个器件)

● 存储区域 4 用于连接 PC 卡设备

从上图可知FSMC总共管理1GB空间,拥有4个存储块(Bank),这里我们讨论存储块1(Bank1),Bank1分为4个区,每个区64M字节空间,每个区都有独立的寄存器对所连接的存储器进行配置。Bank1的256M字节空间由28根地址线(HADDR[27:0])寻址。

这里HADDR是内部AHB地址总线,其中HADDR[25:0]来自外部存储器地址FSMC_A[25:0],而HADDR[26:27]对4个区进行寻址,如下图:

 

HARRD[25:0]包含外部存储器地址,由于HARRD为字节地址,而存储器按字寻址,所以根据存储器数据的宽度的不同,实际向存储器发送的地址也将有所不同,如下图:

 

 

 

 

Bank1 接的是 16 位宽度存储器的时候:HADDR[25:1]-->FSMC[24:0]。

Bank1 接的是  8 位宽度存储器的时候:HADDR[25:0]-->FSMC[25:0]。

不论外部接 8  位/16  位宽设备,FSMC_A[0] 永远接在外部设备地址 A[0] 。

 

    TFTLCD使用的是 16 位数据宽度,所以 HADDR[0]并没有用到,只有HADDR[25:1]是有效的,对应关系变为:HADDR[25:1]-->FSMC[24:0],相当于右移了一位,这里请大家特别留意。另外,HADDR[27:26]的设置,是不需要我们干预的,比如:当你选择使用 Bank1 的第三个区,即使用 FSMC_NE3 来连接外部设备的时候,即对应了 HADDR[27:26]=10,我们要做的就是配置对应第3区的寄存器组, 来适应外部设备即可。

STM32F4的FSMC各Bank配置寄存器如表

 

对于NOR FLASH控制器,主要是通过FSMC_BCRxFSMC_BTRxFSMC_BWTRx寄存器设置(其中x=1~4,对应4个区)。通过这3个寄存器,可以设置FSMC访问外部存储器的时序参数、拓宽了可以选用的外部存储器的速度范围。FSMCNOR FLASH控制器支持同步和异步突发两种访问方式。选用同步突发访问方式时,FSMCHCLK(系统时钟)分频后,发送给外部存储器作为同步时钟信号FSMC_CLK。此时需要的设置的时间参数有2个:

 

①:HCLKFSMC_CLK的分频系数(CLKDIV),可以为2~16

②:同步突发访问中获得第1个数据所需要的等待延迟(DATLAT)。

对于异步突发访问方式,FSMC主要设置3个时间参数:地址建立时间(ADDSET)、数据建立时间(DATSET)和地址保持时间(ADDHLD)。

 FSMC 综合了 SRAMROMPSRAM NOR Flash 产品的信号特点,定义了 4 种不同的异步时序模型。选用不同的时序模型时,需要设置不

同的时序参数,如表

 

 

                                                                        

    在实际扩展时,根据选用存储器的特征确定时序模型,从而确定各时间参数与存储器读/写周期参数指标之间的计算关系;利用该计算关系和存储芯片数据手册中给定的参数指标,可计算出 FSMC 所需要的各时间参数,从而对时间参数寄存器进行合理的配置。

   我们使用异步模式 AModeA)方式来控制 TFTLCD,模式 A 的读操作时序如图所示

 

模式 A 读操作时序图

 

   模式 A 支持独立的读写时序控制, 这个对我们驱动 TFTLCD 来说非常有用,

因为 TFTLCD在读的时候,一般比较慢,而在写的时候可以比较快,如果读写用一样的时序,那么只能以读的时序为基准,从而导致写的速度变慢,或者在读数据的时候,重新配置 FSMC 的延时,在读操作完成的时候,再配置回写的时序,这样虽然也不会降低写的速度,但是频繁配置,比较麻烦。而如果有独立的读写时序控制,那么我们只要初始化的时候配置好,之后就不用再配置,既可以满足速度要求,又不需要频繁改配置。

 

     模式 A 的写操作时序如图所示:


模式 A 写操作时序

图中ADDSETDATASET,是通过不同的寄存器设置的。

SRAM/NOR闪存片选控制寄存器:FSMC_BCRxx=1~4),该寄存器各个位如图:

 

EXTMOD:扩展模式使能位,也就是是否允许读写不同的时序

WREN:写使能位。我们需要向 TFTLCD 写数据,故该位必须设置为 1

MWID[1:0]:存储器数据总线宽度。00,表示 8 位数据模式;01 表示 16         

            数据模式;1011 保留。我们的 TFTLCD 16 位数据线,

            所以设置 WMID[1:0]=01

MTYP[1:0]:存储器类型。 00 表示 SRAMROM01 表示 PSRAM10      

            表示 NOR FLASH;11保留。前面提到,我们把 TFTLCD 当成  

          SRAM 用,所以需要设置 MTYP[1:0]=00

MBKEN:存储块使能位。这个容易理解,我们需要用到该存储块控制 TFTLCD 

        当然要使能这个存储块了。

 

 SRAM/NOR 闪存片选时序寄存器:FSMC_BTRxx=1~4

 

     这个寄存器包含了每个存储器块的控制信息, 可以用于SRAMROMNOR闪存存储器。如果 FSMC_BCRx 寄存器中设置了 EXTMOD 位,则有两个时序寄存器分别对应读(本寄存器)和写操作(FSMC_BWTRx 寄存器)。因为我们要求读写分开时序控制,所以 EXTMOD 是使能了的, 也就是本寄存器是读操作时序寄存器, 控制读操作的相关时序。 本章我们要用到的设置有:

ACCMODDATAST ADDSET 这三个设置。

ACCMOD[1:0]:访问模式。 00 表示访问模式 A01 表示访问模式 B10    

               表示访问模式 C11 表示访问模式 D,本章我们用到模式 A,  

               故设置为 00

DATAST[7:0]:数据保持时间。0 为保留设置,其他设置则代表保持时间为:

              DATAST HCLK 时钟周期, 最大为 255 HCLK 周期。

               ILI9341 来说, 其实就是 RD 低电平持续时间,一般为

              355ns。而一个 HCLK 时钟周期为 6ns 左右(1/168Mhz) ,

              为了兼容其他屏,我们这里设置 DATAST 60,也就是 60

              HCLK 周期,时间大约是 360ns

ADDSET[3:0]:地址建立时间。 其建立时间为: ADDSET HCLK 周期,  

              最大为 15 HCLK周期。对 ILI9341 来说,这里相当于 RD

              高电平持续时间,为 90ns,我们设置 ADDSET 15

               15*6=90ns

 

SRAM/NOR 闪写时序寄存器:FSMC_BWTRxx=1~4) ,该寄存器各

位描述如图

 

    该寄存器用作写操作时序控制寄存器, 我们需要用到的设置同样是: ACCMODDATASTADDSET 这三个设置。这三个设置的方法同FSMC_BTRx 一模一样,只是这里对应的是写操作的时序,ACCMOD 设置同 FSMC_BTRx 一模一样,同样是选择模式 A,另外 DATAST ADDSET 则对应低电平和高电平持续时间,对 ILI9341 来说,这两个时间只需要 15ns 就够了,比读操作快得多。所以我们这里设置 DATAST 2,即 3 HCLK 周期,时间约为 18ns。然后ADDSET 设置为 3,即 3 HCLK 周期,时间为 18ns。至此,我们对 STM32F4 FSMC 介绍就差不多了,通过以上两个小节的了解,我们可以开始写 LCD 的驱动代码了。不过,这里还要给大家做下科普,在 MDK 的寄存器定义里面,并没有定义 FSMC_BCRxFSMC_BTRxFSMC_BWTRx 等这个单独的寄存器,而是将他们进行了一些组合。

FSMC_BCRx FSMC_BTRx,组合成 BTCR[8]寄存器组,他们的对应关系如下:

BTCR[0]对应 FSMC_BCR1BTCR[1]对应 FSMC_BTR1

BTCR[2]对应 FSMC_BCR2BTCR[3]对应 FSMC_BTR2

BTCR[4]对应 FSMC_BCR3BTCR[5]对应 FSMC_BTR3

BTCR[6]对应 FSMC_BCR4BTCR[7]对应 FSMC_BTR4

FSMC_BWTRx 则组合成 BWTR[7],他们的对应关系如下:

BWTR[0]对应 FSMC_BWTR1BWTR[2]对应 FSMC_BWTR2

BWTR[4]对应 FSMC_BWTR3BWTR[6]对应 FSMC_BWTR4

BWTR[1]BWTR[3]BWTR[5]保留,没有用到。

 

FSMC初始化过程

①:FSMC的时钟使能用  

RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC, ENABLE);

②:GPIO口的时钟使能,设置相关IO口为复用推挽输出

③:配置FSMC接口

  ①:选择存储器类型(SRAM要有选择块的区(1~4))

  ②:配置读写时序

③:延时,以待FSMC准备好

④:读写直接访问相应地址即可,当成一般的存储器访问

 

    FSMC的好处就是你一旦设置好之后,WR、RD、DB0-DB15这些控制线和数据线,都是FSMC自动控制的。打个比方,当你在程序中写到:
*(volatile unsigned short int *)(0x60000000)=val;
那么FSMC就会自动执行一个写的操作,其对应的主控芯片的WE、RD这些脚,就会呈现出写的时序出来(即WE=0,RD=1),数据val的值也会通过DB0-15自动呈现出来(即FSMC-D0:FSMC-D15=val)。地址0x60000000会被呈现在数据线上(即A0-A25=0,地址线的对应最麻烦,要根据具体情况来,好好看看FSMC手册)。

 

 

 

 

 

 

 

 

 

 

 

 

 

FMSC--SRAM

  与彩屏控制类似,但是多了高字节控制和低字节控制,具体可以看看手册,由硬件自动控制。

 

首先说一个前提:STM32 单片机的一个地址(:0x20000000)是一个字节
也就是说如果定义一个16位数组 u16 temp[5]  如果temp对应的地址是0x00000000 那么temp+1对应的地址是0x00000002 (地址是加2)

 

   NBL[1:0]NBL[1]为高字节使能,NBL[0]为低字节使能(都是低电平有效)

   这里有一点要注意,如果以8位模式对外设进行操作,HADDR[25:0]对应STM32芯片引脚A[25:0],因为MPU内部的地址增长规律是每8位增长1;而对于16位模式,HADDR[25:1]对应于芯片引脚的A[24:0],这也刚好符合MPU地址增长规律(16位增长2)那么这时候并不是说HADDR[0]没有用处了,实际上它这时用于决定NBL[1:0]

如果HADDR[0]=0NBL[1:0]=01B,这时候访问的是外设16位中的低8位。

如果HADDR[0]=1NBL[1:0]=10B,这时候访问的就是高8位了。

说白了,这里也就是一个译码器,HADDR[0]为译码器输入,NBL[1:0]是输出。

这就可以看出,虽然使用了不同的模式,但是对于MPU内部的地址增长却没有影响。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32的FSMC 的相关文章

  • STM32在Debug时程序运行时间不对,Debug时定时器中断每次进入断点时间不对,定时器一开启就进入中断的解决办法

    一 Debug时程序时间不对解决办法 1 点击魔术棒 2 点击Debug 点击Settings 3 点击Trace 在Core Clock里修改为你的系统时钟 二 Debug时定时器中断每次进入断点时间不对 在Debug时 程序停下来 定时
  • 138-基于stm32单片机汽车多功能仪表盘显示系统Proteus仿真+源程序

    资料编号 138 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 DHT11传感器 ds1302时钟 LED灯 蜂鸣器 电位器 制作一个基于stm32单片机汽车多功能仪表盘显示系统Proteus仿真 2 通过DHT1
  • 136-基于stm32单片机家庭温湿度防漏水系统设计Proteus仿真+源程序

    资料编号 136 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 DHT11传感器 蜂鸣器 制作一个基于stm32单片机家庭温湿度防漏水系统设计Proteus仿真 2 通过DHT11传感器检测当前温湿度 并且显示到L
  • HAL库STM32常用外设教程(二)—— GPIO输入\输出

    HAL库STM32常用外设教程 二 GPIO输入 输出 文章目录 HAL库STM32常用外设教程 二 GPIO输入 输出 前言 一 GPIO功能概述 二 GPIO的HAl库驱动 三 GPIO使用示例 1 示例功能 四 代码讲解 五 总结
  • HAL库学习

    CMSIS简介 CMSIS Cortex Microcontroller Software Interface Standard 微控制器软件接口标准 由ARM和其合作的芯片厂商 ST NXP 软件工具厂商 KEIL IAR 共同制定的标准
  • 毕业设计 江科大STM32的智能温室控制蓝牙声光报警APP系统设计

    基于STM32的智能温室控制蓝牙声光报警APP系统设计 1 项目简介 1 1 系统构成 1 2 系统功能 2 部分电路设计 2 1 stm32f103c8t6单片机最小系统电路设计 2 2 LCD1602液晶显示电路设计 2 2 风
  • 解决KEIL编译慢问题

    两种方案 使用v6版本的ARM Compiler 如果v6版本编译不过 必须使用v5版本的 则可以勾选掉Browse Information选项 提升很明显 1分多钟能优化到几秒 看代码量 但是这个有个弊端 在KEIL中会影响函数跳转 建议
  • VS Code 有没有办法导入 Makefile 项目?

    正如标题所说 我可以从现有的 Makefile 自动填充 c cpp properties json 吗 Edit 对于其他尝试导入 makefile 的人 我找到了一组脚本 它们完全可以实现我想要实现的目标 即通过 VS Code 管理
  • 无法使用 OpenOCD 找到脚本文件

    我正在尝试按照本教程将 OpenOCD 与我的 ST 发现板一起使用 https japaric github io discovery README html https japaric github io discovery READM
  • 毕设开题分享 单片机智能教室系统(智能照明+人数统计)

    1 简介 Hi 大家好 今天向大家介绍一个学长做的单片机项目 单片机智能教室系统 智能照明 人数统计 大家可用于 课程设计 或 毕业设计 项目分享 https gitee com feifei1122 simulation project
  • for循环延时时间计算

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 之前做led点亮的实验 好像是被delay函数影响了 因为delay参数设置的不对
  • systick定时器

    systick定时器 文章目录 前言 一 前期疑惑 二 解答 1 关于systick是阻塞的吗 2 非阻塞 三 软件编写 总结 前言 这边记录systick相关知识点 一 前期疑惑 在学习systick志气啊 其实对于systick还是一脸
  • STM32 Nucleo 上的上升沿中断多次触发

    我正在使用 STM32 NUCLEO F401RE 微控制器板 我有一个扬声器 经过编程 当向上 向下推操纵杆时 可以按设定的量改变频率 我的问题是 有时 通常 当向上 向下推动操纵杆时 频率会增加 减少多次 这意味着 ISR 正在执行多次
  • STM32 上的 ADC 单次转换

    我正在研究 STM32 F103x 上的 ADC 编程 并从最简单的情况 单次转换开始 测量内部温度传感器 连接到 ADC1 的值 并使用 USART 将其发送到 COM 端口 目标似乎很明确 但是当我尝试将源代码下载到闪存时 它不会向 C
  • PWM DMA 到整个 GPIO

    我有一个 STM32F4 我想对一个已与掩码进行 或 运算的 GPIO 端口进行 PWM 处理 所以 也许我们想要 PWM0b00100010一段时间为 200khz 但随后 10khz 后 我们现在想要 PWM0b00010001 然后
  • 在 Contiki 程序中使用 malloc

    考虑以下 Contiki 程序 include
  • HAL_Delay() 陷入无限循环

    我被 HAL Delay 函数困住了 当我调用此函数 HAL Delay 时 控制陷入无限循环 在寻找问题的过程中 我发现了这个 http www openstm32 org forumthread2145 threadId2146 htt
  • 使用 STM32 USB 设备库将闪存作为大容量存储设备

    我的板上有这个闪存IC 它连接到我的STM32F04 ARM处理器 处理器的USB端口可供用户使用 我希望我的闪存在通过 USB 连接到 PC 时被检测为存储设备 作为第一步 我在程序中将 USB 类定义为 MSC 效果很好 因为当我将主板
  • 使用 STM32F0 ADC 单独读取不同的输入

    STM32F072CBU 微控制器 我有多个 ADC 输入 并且希望单独读取它们 STMcubeMX 生成样板代码 假设我希望按顺序读取所有输入 但我无法弄清楚如何纠正这个问题 这篇博文 http blog koepi info 2015
  • STM32 传输结束时,循环 DMA 外设到存储器的行为如何?

    我想问一下 在以下情况下 STM32 中的 DMA SPI rx 会如何表现 我有一个指定的 例如 96 字节数组 名为 A 用于存储从 SPI 接收到的数据 我打开循环 SPI DMA 它对每个字节进行操作 配置为 96 字节 是否有可能

随机推荐

  • 算法之字符串匹配一

    目录 前言 BF算法 RK算法 总结 参考资料 前言 字符串匹配指的是一个短点的字符串与一个长点的字符串进行匹配 并确认短的字符串是否在长的字符串中存在 匹配算法有很多 本文介绍两种简单 容易理解的两种算法 BF算法和RK算法 BF算法 B
  • C语言版本数据结构03:顺序表+链表

    今天我们来学习数据结构的第一个顺序结构 顺序表和链表 1 线性表 线性表是我们要学的第一个结构 我们知道一串连续的数字或者字符想要在内存中存储可以用数组 但是我们又知道数组是静态的 那么如果我想要对这组数据进行增删查改呢 这就显现出线性表的
  • Mysql按数字大小排序String字段

    今天做项目的时候 遇到个小小的问题 在数据库中查询的时候 要用String类型的数字进行一下排序 结果是按照字符串排序来处理的 没有达到预想中的效果 于是先是想到将字符转成数字型的 在网上搜了一下 基本上都是这样做的 只不过很多人实现的方式
  • 内存检测工具Dr. Memory的使用

    Dr Memory是一个内存调试工具 它是一个开源免费的内存检测工具 它能够及时发现内存相关的编程错误 比如未初始化访问 内存非法访问 数组越界读 写 以及内存泄露等 它可以在Linux Windows Mac OS和Android操作系统
  • ngrok的使用(超详细)

    1 ngrok简介 百度百科 ngrok 是一个反向代理 通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道 ngrok 可捕获和分析所有通道上的流量 便于后期分析和重放 啥玩意 1 其实说白了就是你写一个项目 在PC上完美
  • 微信小程序合法域名配置

    在微信小程序的开发过程中 当需要请求第三方网站数据时 各种教程就直接说调用wx request接口即可 但是当初学者自己用的时候就会出现问题 比如我们这里请求聚合数据的API 里边有不少免费的数据申请就可以使用 调用邮编查询的接口 getP
  • Java中的wait()与notify()/notifyAll()

    1 wait 与sleep yield 的不同 调用sleep 和yield 时 线程掌握的对象上的锁不会被释放 而调用wait 时 线程掌握的对象上的锁会被释放掉 这一点是需要注意的 也是有意义的 因为调用wait 会释放锁 所以在一个s
  • 按键从Linux到Android

    按键从Linux到Android 现在的普通按键也集成到Linux Input子系统中了 只需要把按键对应的IO端口配置好 按键就可以工作了 所以一般提供的BSP 或者叫作解决方案 中 已经完善了按键驱动 关键是快速的了解按键的映射 所以这
  • objective c 中的继承和多态简单示意(二)

    holydancer原创 如需转载 请在显要位置注明 转自holydancer的CSDN专栏 原文地址 http blog csdn net holydancer article details 7334377 OC中的继承和JAVA C
  • 剑指Offer第四十九题:把字符串转换成整数

    题目描述 将一个字符串转换成一个整数 实现Integer valueOf string 的功能 但是string不符合数字要求时返回0 要求不能使用字符串转换整数的库函数 数值为0或者字符串不是一个合法的数值则返回0 思路 判断正负什么的都
  • LeGO-LOAM论文翻译(内容精简)

    LeGO LOAM是一种在LOAM之上进行改进的激光雷达建图方法 建图效果比LOAM要好 但是建图较为稀疏 计算量也更小了 本文原地址 wykxwyc的博客 github注释后LeGO LOAM源码 LeGO LOAM NOTED 关于代码
  • C++类的介绍

    最近在学习SLAM 顺便将C 类的知识复习一下 其中部分官方定义和程序设计方法来源于西北工业大学魏英老师 1 类的定义 是用户自定义的数据类型 C 一个类定义的形式如下 class 类名 成员列表 成员列表是类成员的集合 数目可以任意多 一
  • “三国演义”何处去

    作者 朱金灿 来源 http blog csdn net clever101 微软资深副总裁张亚勤在2011移动开发者大会的演讲 移动互联的新趋势 这样描述当前的移动操作系统的分布趋势 随着Windows Phone的推出 移动平台市场渐成
  • 【Mac】mac 安装Axure RP 8 点不开 就一直跳-后闪退-报错Expected an Int64 but got a System.UInt64

    1 美图 2 概述 2 1 闪退 先确保软件已安装到 应用程序 中 比如 CleanMyMac X 软件闪退 就输入以下命令然后回车即可 如下图 codesign f s deep Applications CleanMyMac X app
  • C语言中循环结构1(求和)思路

    题目描述 求S a aa aaa aa aaa 有n个a 之值 其中a是一个数字 例如 2 22 222 2222 22222 n 5 a 2 a和n由键盘输入 思路 C语言中一个简单的循环 循环次数 循环后的sum 每循环一次 a扩大10
  • JavaWeb问题集锦: 数据库连接池请求超时 HikariPool-1 - Connection is not available, request timed out after 30000ms

    报错日志 java sql SQLTransientConnectionException HikariPool 1 Connection is not available request timed out after 30000ms 原
  • 机器学习-集成学习-梯度提升决策树(GBDT)

    目录 1 GBDT算法的过程 1 1 Boosting思想 1 2 GBDT原理 需要多少颗树 2 梯度提升和梯度下降的区别和联系是什么 3 GBDT的优点和局限性有哪些 3 1 优点 3 2 局限性 4 RF 随机森林 与GBDT之间的区
  • 更换编译器,CODE::BLOCKS 无法DEBUG 至断点

    想在LINUX下使用CODE BLOCKS 编写调试并编译连接ARM运行程序 IDE编译环境默认为 GNU GCC 编译器 修改如下 1 至Settings gt Compiler and debugger settings 将Setect
  • 互联网摸鱼日报(2023-04-19)

    互联网摸鱼日报 2023 04 19 InfoQ 热门话题 传统网关的云原生策略 InfoQ 极客有约 华为发布高阶智能驾驶系统 ADS 2 0 百度发布旗舰产品城市智驾 Apollo City Driving Max 小鹏汽车发布 SEP
  • STM32的FSMC

    FSMC之LCD彩屏学习 彩屏的驱动这里主要用到的是8080并口接口 彩屏这里有区分带有控制器和不带控制器的 80并口有如下一些信号线 CS 片选信号 WR 写数据 RD 读数据 RST 复位 RS 命令 数据标志 0 读写命令 1 读写数