
STM32
文章平均质量分 89
熠熠L
这个作者很懒,什么都没留下…
展开
-
【STM32】HAL库-以太网外设-LAN8720A-LWIP-无操作系统
LAN8720A使用RMII接口与STM32的ETH外设进行数据通信STM32使用SMI接口读/写LAN8720A的寄存器LAN8720A由外部25MHz晶振提供时钟,LED2/NINTSEL引脚配置为下拉,故PHY(LAN8720A)提供50MHz时钟给RMII的NINT/REFCLKO(此时引脚NINT/REFCLKO仅作为时钟输出,中断功能不可用),RMII需要50MHz时钟LED1/REGOFF配置为下拉,使用LAN8720A内部稳压器上电后MODE引脚的电平会被锁存,用于设置PHY的工作模式,原创 2022-09-14 00:12:37 · 10315 阅读 · 6 评论 -
【STM32】标准库-以太网外设-LAN8720A-LWIP-无操作系统
函数是一个必须被无限循环调用的 LwIP 支持函数,一般在 main 函数的无限循环中调用,主要功能是为 LwIP 各个模块提供时间并查询链路状态,该函数有一个形参,用于指示当前时间,单位为 ms。原创 2022-09-12 14:32:27 · 5264 阅读 · 1 评论 -
【STM32】标准库-SDIO-SDHC
定义了检测 SD 卡是否正确插入的宏,ST 官方的 SD 卡驱动是以一个输入引脚电平判断 SD卡是否正确插入,这里我们不使用,把引脚定义去掉 (不然编译出错),保留 SD_PRESENT和 SD_NOT_PRESENT 两个宏定义/**/* start: 自定义配置 */ // /*!// } /* end: 自定义配置 */ return status;}是否启动DMA传输数据。原创 2022-09-03 14:30:20 · 852 阅读 · 0 评论 -
SD卡笔记
SD I/O 卡本身不是用于存储的卡,它是指利用 SDIO 传输协议的一种外设。比如 Wi-Fi Card,它主要是提供Wi-Fi 功能,有些 Wi-Fi 模块是使用串口或者 SPI 接口进行通信的,但 Wi-Fi SDIO Card 是使用SDIO 接口进行通信的。即使目前 SD 协议提供的 SD 卡规范版本最新是 4.01 版本,stm32f4xx 系列控制器,即只支持标准容量 SD 和高容量 SDHC 标准卡,不支持超大容量SDXC 标准卡,所以可以支持的最高卡容量是 32GB。...原创 2022-08-27 15:56:20 · 2589 阅读 · 0 评论 -
【STM32】标准库-LTDC-DMA2D
STM32F429 系列芯片内部自带一个 LTDC 液晶控制器,使用 SDRAM 的部分空间作为显存,可直接控制液晶面板,无需额外增加液晶控制器芯片。STM32 的 LTDC 液晶控制器最高支持 800x600分辨率的屏幕;可支持多种颜色格式,包括 RGB888、RGB565、ARGB8888 和 ARGB1555 等 (其中的“A”是指透明像素);支持 2 层显示数据混合,利用这个特性,可高效地做出背景和前景分离的显示效果,如以视频为背景,在前景显示弹幕。LTDC 外设使用 3 种时钟信号,包括 AH原创 2022-08-24 23:02:54 · 2464 阅读 · 1 评论 -
【STM32】工程配置,存储空间分别情况,常用操作
为堆顶地址,也可以自己计算堆顶地址。,该文件中有详细的向量表分布情况。在main.c定义两个全局变量。在Hex文件中找到该地址。(先存的是低字节的数据)生成的Hex中应要有。在Hex文件中找数据。......原创 2022-08-13 15:46:12 · 2343 阅读 · 0 评论 -
【STM32】标准库-FMC-SDRAM
STM32F429 使用 FMC 外设来管理扩展的存储器,FMC 是 Flexible Memory Controller 的缩写,译为可变存储控制器。它可以用于驱动包括 SRAM、类型的存储器FSMC 控制器 (Flexible Static MemoryController),译为可变静态存储控制器,所以它们不能驱动 SDRAM 这样的动态存储器,因为驱动 SDRAM 时需要定时刷新,STM32F429 的 FMC 外设才支持该功能,且只支持普通的 SDRAM,不支持 DDR类型的 SDRAM。...原创 2022-08-13 12:00:56 · 1434 阅读 · 0 评论 -
SDRAM笔记
SRAM :静态RAM,不用刷新,速度可以非常快,像CPU内部的cache,都是静态RAM,缺点是一个内存单元需要的晶体管数量多,因而价格昂贵,容量不大。DRAM:动态RAM,需要刷新,容量大。SDRAM:同步动态RAM,需要刷新,速度较快,容量大。DDR SDRAM:双通道同步动态RAM,需要刷新,速度快,容量大。........................原创 2022-08-07 20:16:48 · 3311 阅读 · 0 评论 -
【STM32】标准库-看门狗
此器件具有两个嵌入式看门狗外设,具有安全性高、定时准确及使用灵活的优点。两个看门狗外设(独立和窗口)均可用于检测并解决由软件错误导致的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。IWDG 最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时 间精度要求较低的场合当通过对关键字寄存器 (IWDG_KR) 写入值 0xCCCC 启动独立看门狗时,计数器开始从复位 值 0xFFF 递减计数。...原创 2022-08-06 22:21:19 · 600 阅读 · 0 评论 -
【STM32】标准库-读写内部Flash及用户选项字节
默认情况下,FLASH_OPTCR 寄存器中的第 0 位 OPTLOCK 值为 1,它表示选项字节被上锁,需要解锁后才能进行修改,当寄存器的值设置完成后,对 FLASH_OPTCR 寄存器中的第 1 位 OPTSTRT值设置为 1,硬件就会擦除选项字节扇区的内容,并把 FLASH_OPTCR/1 寄存器中包含的值写入到选项字节。修改选项字节的内容可修改各种配置,但是,当应用程序运行时,无法直接通过选项字节的地址改写它们的内容,例如,接使用指针操作地址 0x1FFFC0000 的修改是无效的。........原创 2022-08-04 22:36:39 · 4879 阅读 · 0 评论 -
【STM32】标准库-自定义BootLoader
bootloader其实就是一段启动程序,它在芯片启动的时候最先被执行,可以用来做一些硬件的初始化或者用作固件热更新,当初始化完成之后跳转到对应的应用程序中去。bootloader程序需要通过下载器烧写到芯片中,而APP则可以通过有线方式的UART、IIC、USB、SPI等总线来通过bootloader来更新,视所设计的bootloader程序而定。另外,对于无线方式热更新APP,一般是用WiFi、bluetooth通过UART透传的方式烧写芯片APP程序。......原创 2022-07-31 18:25:26 · 2608 阅读 · 0 评论 -
【STM32】HAL库-DAC
数字/模拟转换模块(DAC)是12位数字输入,电压输出的数字/模拟转换器。DAC可以配置为8位或12位模式,也可以与DMA控制器配合使用。为了避免寄生的干扰和额外的功耗,引脚PA4或者PA5在之前应当设置成模拟输入(AIN)。将DAC_CR寄存器的ENx位置’1’即可打开对DAC通道x的供电。经过一段启动时间tWAKEUP,DAC通道x即被使能。注意: ENx位只会使能DAC通道x的模拟部分,即便该位被置’0’,DAC通道x的数字部分仍然工作。DAC集成了2个输出缓存,可以用来减少输出阻抗,无需外原创 2022-06-08 11:38:43 · 2305 阅读 · 0 评论 -
【STM32】HAL库-SPI
引脚NSS引脚管理配置为从设备在从模式下,SCK引脚用于接收从主设备来的串行时钟。SPI_CR1寄存器中BR[2:0]的设置不影响数据传输速率。建议在主设备发送时钟之前使能SPI从设备,否则可能会发生意外的数据传输配置步骤配置为主设备在主配置时,在SCK脚产生串行时钟。配置步骤状态标志关闭SPI当通讯结束,可以通过关闭SPI模块来终止通讯。清除SPE位即可关闭SPI。在某些配置下,如果再传输还未完成时,就关闭SPI模块并进入停机模式,则可能导致当前的传输被破坏,而且BS.原创 2022-06-07 21:09:52 · 8094 阅读 · 1 评论 -
【STM32】HAL库-ADC
12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。ADC的输入时钟不得超过14MHz通过设置ADC_CR2寄存器的ADON位可给ADC上电。当第一次设置ADON位时,它将ADC从断电状态下唤醒。ADC上电延迟一段时间后(tSTAB),再次设置ADON位时开始进行转换。通过清除AD原创 2022-06-03 16:10:25 · 11071 阅读 · 1 评论 -
【STM32】HAL库-CRC校验
CRC循环冗余校验(CRC)计算单元是根据固定的生成多项式得到任一32位全字的CRC计算结果。使用CRC-32(以太网)多项式:0x4C11DB7CRC计算单元含有1个32位数据寄存器:对该寄存器进行写操作时,作为输入寄存器,可以输入要进行CRC计算的新数据。对该寄存器进行读操作时,返回上一次CRC计算的结果。每一次写入数据寄存器,其计算结果是前一次CRC计算结果和新计算结果的组合(对整个32位字进行CRC计算,而不是逐字节地计算)。在CRC计算期间会暂停CPU的写操作,因此可以对寄存器原创 2022-05-31 13:54:57 · 6222 阅读 · 3 评论 -
【STM32】HAL库-通用定时器
简介通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成。它适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)。使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。每个定时器都是完全独立的,没有互相共享任何资源。时基单元软件可以读写计数器CNT、自动重装载寄存器ARR和预分频寄存器PSC,即使计数器运行时也可以操作。当前计数值寄存器CNT向上计数,可随时修改自动重装载寄存器ARR可原创 2022-05-18 13:21:49 · 11883 阅读 · 1 评论 -
【STM32】HAL库-基本定时器
简介基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动。它们可以作为通用定时器提供时间基准,特别地可以为数模转换器(DAC)提供时钟。实际上,它们在芯片内部直接连接到DAC并通过触发输出直接驱动DAC。这2个定时器是互相独立的,不共享任何资源。寄存器软件可以读写计数器CNT、自动重装载寄存器ARR和预分频寄存器PSC,即使计数器运行时也可以操作。当前计数值寄存器CNT向上计数,可随时修改自动重装载寄存器ARR可随时修改,具有影子寄存器,根据TIM原创 2022-05-15 22:12:27 · 1316 阅读 · 0 评论 -
【STM32】HAL库-RTC实时时钟
简介实时时钟是一个独立的定时器RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待机模式唤醒后,RTC的设置和时间维持不变系统复位后,对后备寄存器和RTC的访问被禁止,这是为了防止对后备区域(BKP)的意外写操作。执行以下操作将使能对后备寄存器和RTC的访问:设置寄存器RCC_APB1ENR的PWREN和BKPEN位,使能电源和后备接口时钟设置寄存器PWR_CR的DBP位,使能对后备寄存器和RTC的访问。时钟源通过设置备份域控制寄存器(RCC_BDCR)里的R原创 2022-05-14 15:09:44 · 7144 阅读 · 0 评论 -
【STM32】HAL库-DMA
DMA直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。DMA控制器和Cortex™-M3核心共享系统数据总线,执行直接存储器数据传输。当CPU和DMA同时访问相同的目标(RAM或外设)时,DMA请求会暂停CPU访问系统总线达若干个周期,总线仲裁器执行循环调度,以保证CPU至少可以得到一半的系统总线(存储器或外设)带宽。DMA配置过程DMA的数据对齐一句话,如果目标的原创 2022-05-13 15:02:00 · 3069 阅读 · 0 评论 -
【STM32】HAL库-串口USART
USART简介通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。一个波特率寄存器(USART_BRR),12位的整数和4位小数任何USART双向通信至少需要两个脚:接收数据输入(RX)和发送数据输出(TX)当发送器被激活并且不发送数据时,TX引脚处于高电平在起始位期间,TX脚处于低电平,在停止位期间处于高电平。发送和接收由一共用的波特率发生器驱动,当发送器和接收器的使原创 2022-05-11 16:27:28 · 15316 阅读 · 1 评论 -
【STM32】HAL库-备份寄存器(BKP)
简介备份寄存器是42个16位的寄存器,可用来存储84个字节的用户应用程序数据。他们处在备份域里,当VDD电源被切断,他们仍然由VBAT维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位。复位后,对备份寄存器和RTC的访问被禁止,并且备份域被保护以防止可能存在的意外的写操作。执行以下操作可以使能对备份寄存器和RTC的访问。通过设置寄存器RCC_APB1ENR的PWREN和BKPEN位来打开电源和后备接口的时钟电源控制寄存器(PWR_CR)的DBP位来使能原创 2022-05-10 16:58:59 · 5701 阅读 · 0 评论 -
【STM32】HAL库-嵌套向量中断控制器NVIC
中断与异常嵌套向量中断控制器,简称为NVIC,其支持为数众多的系统异常和外部中断。Cortex-M3支持256个中断。中断/异常类型表如下编号为 1-15 的称为系统异常(注意:没有编号为 0 的异常),大于等于 16 的称为(外部)中断。除了个别异常的优先级被定死外,其它中断/异常的优先级都是可编程的外部中断表如下优先级在 CM3 中,优先级对于异常来说很关键的,它会决定一个异常是否能被掩蔽,以及在未掩蔽的情况下何时可以响应。优先级的数值越小,则优先级越高。CM3 支持中断原创 2022-05-09 17:31:10 · 2404 阅读 · 0 评论 -
【STM32】HAL库-系统滴答定时器SysTick
SysTick定时器被捆绑在NVIC中,是一个简单的定时器,对于CM3、CM4内核芯片,都有Systick定时器。Systick定时器常用来做延时,或者实时系统的心跳时钟。这样可以节省MCU资源,不用浪费一个定时器。Systick定时器就是系统滴答定时器,一个24 位的倒计数定时器,计到0 时,将从RELOAD 寄存器中自动重装载定时初值。系统滴答定时器有4个寄存器CTRLSysTick控制及状态寄存器(地址:0xE000_E010)LOADSysTick重装载数值寄存器(地址:原创 2022-05-08 22:20:58 · 17544 阅读 · 2 评论 -
【STM32】HAL库-电源控制(低功耗模式)
电源框图ADC单独供电为了提高转换的精确度,ADC使用一个独立的电源供电,过滤和屏蔽来自印刷电路板上的毛刺干扰。ADC的电源引脚为VDDA独立的电源地VSSA电池备份区域当VDD断电时,可以保存备份寄存器的内容和维持RTC的功能。VBAT为RTC、LSE(低速外部时钟)振荡器、备份寄存器和PC13至PC15供电。当备份区域由VDD(内部模拟开关连到VDD)供电时,下述功能可用:PC14和PC15可以用于GPIO或LSE引脚PC13可以作为通用I/O口、TAMPER引脚、RTC原创 2022-05-08 17:09:32 · 4090 阅读 · 0 评论 -
【STM32】HAL库-外部中断
外部中断框图产生中断硬件触发外部中断配置中断屏蔽寄存器中的屏蔽位,允许该外部中断请求选择外部中断的触发边沿,上升沿/下降沿/两者都检测在NVIC中设置外部中断的优先级,并使能该中断在中断发生后,在中断服务函数中,清除请求挂起寄存器中的对应位(写1清除)STM32参考手册中的描述:要产生中断,必须先配置好并使能中断线。根据需要的边沿检测设置2个触发寄存器,同时在中断屏蔽寄存器的相应位写’1’允许中断请求。当外部中断线上发生了期待的边沿时,将产生一个中断请求,对应的挂起位也随之被置’1’。原创 2022-05-07 17:41:52 · 8792 阅读 · 0 评论 -
【STM32】HAL库-GPIO及位段
GPIO模式输入浮空输入上拉输入下拉模拟输入推挽输出开漏输出推挽复用输出开漏复用输出一篇介绍推挽与开漏输出的区别的文章 链接I/O端口位的基本结构配置表输入浮空/上拉/下拉配置输出缓冲器被禁止施密特触发输入被激活根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器对输入数据寄存器的读访问可得到I/O状态输出配置输出缓冲器被激活开漏模式:输出寄存器上的’0’激活N-MOS,而原创 2022-05-06 19:50:18 · 1341 阅读 · 0 评论 -
【STM32】SRAM启动
改地址 空间大小添加宏定义 VECT_TAB_SRAM修改dubug可以再添加一个工程构建目标在不同的工程构建目标中,所有配置都是独立的,例如芯片型号、下载配置等等,但如果两个工程共用了同一个文件,对该文件的修改会同时影响两个工程,例如这两个工程都使用同一个 main 文件,我们在 main 文件修改代码,两个工程构建目标都会被修改。...原创 2021-04-10 22:25:39 · 1254 阅读 · 0 评论