#STM32
张三李四结婚了
这个作者很懒,什么都没留下…
展开
-
STM32 XIP启动过程-RW和ZI数据搬移讲解
最近在RISC-V架构下基于某芯片实现XIP方式的flash代码启动,至少这部分代码对于我是可见的,联想到之前一直很困惑STM32的引导程序在哪里实现得将RW复制到RAM中,并RAM中初始化ZI的,写下自己的分享。以下仅针对stm32XIP模式,也就是flash启动进行讲解引导程序嵌入式上电后需要对需要对系统硬件和软件运行环境进行初始化,这些工作往往是由汇编语音编写的引导程序完成。引导程序是嵌入式系统上电后运行的第一段软件代码,对于嵌入式系统来说,引导程序非常关键。引导程序执行的操作依赖于开发的嵌入式系原创 2020-09-24 20:17:23 · 4218 阅读 · 1 评论 -
不同优化等级下对debug的影响
利用cube生成的L011F4工程下,发现debug时程序并没按照指定顺序进行执行,很多变量也没有显示具体值或者值显示与实际不符,查看了下软件优化等级,发现为-o3,才意识到在该等级下调试会被很大优化导致的。另外也要注意在该等级下,对多线程、中断的公用标志量volatile关键字的使用,防止出现不符合逻辑的问题。具体可参某乎作者关于MDK优化的文章:https://zhuanlan.zhihu.com/p/24402180...原创 2020-07-22 09:36:58 · 392 阅读 · 0 评论 -
stm32L0系列低功耗唤醒
stm32低功耗模式唤醒后系统如何运行?如果是stop或者休眠模式,那么唤醒后会继续从休眠停止的位置继续开始执行程序,所有寄存器的值都保持不变。如果是待机模式,那么想当于复位重启,程序重新执行,除了备份寄存器外所有值都清除了。...原创 2020-07-14 15:21:37 · 1419 阅读 · 0 评论 -
stm32ADC的使用说明
mcu型号:stm32l0系列,采样通道:采样ADC_CHANNEL_1和ADC_CHANNEL_VREFINT多个通道,后者在电源电压变化时,比如电池供电,准确测量当前采样通道ADC_CHANNEL_xxx电压时会用到。1.初始化配置项说明:ADC_ChannelConfTypeDef sConfig = {0};以下列代码为例进行说明: /**Configure the global features of the ADC (Clock, Resolution, Data Ali..原创 2020-07-09 17:47:18 · 3244 阅读 · 0 评论 -
STM32串口空闲中断idle说明
1.空闲中断的触发机制:空闲中断是在监测到数据接收后(即串口的RXNE位被置位)开始检测,当总线上在一个字节对应的周期内未再有新的数据接收时,触发空闲中断IDLE位被硬件置1.2.IDEL位清零实现:查看stm32参考手册,要注意IDEL位的清零是通过先读取USART_SR,再读取USART_DR实现的(HAL库使用__HAL_UART_CLEAR_NEFLAG(__HANDLE__)执行该序列),而不能通过直接该位清零比如来清除。正常逻辑状态下,中断中我们先处理RXNE中断,将数据读出后,ID原创 2020-07-02 15:16:23 · 14351 阅读 · 0 评论 -
STM32HAL库入门
说明:下面xx表示实际字符就是xx表示形式,n表示数值,ppp表示可能实际有可能出现的符号1.一类stm32fn有自己一个专门的cube库,比如f1系列有自己的f1系列cube库,f4系列有自己的f4cube库,这里n为f系列,如1,3,4,7等等。2.HAL库下各类文件名的作用:stm32fnxx_hal_ppp.c/.h:表示基本外设的操作api,ppp代表任意外设。stm32fnxx_hal_ppp_ex.c/.h:扩展外设特性的API。stm32fnxx_hal.c:表示HAL.原创 2020-06-29 11:37:20 · 1829 阅读 · 0 评论 -
STM32系统架构和时钟
1.STM32的总线:AMBA(Advanced Microprocessor Bus Architecture):是ARM公司提出的一种开放式SO总线,有AMBA1.0 / 2.0 /3.0标准。定义了一种多总线结构,包括两类,系统总线和等级稍低的外设总线,目前已广泛用于RISC的内核上。其中系统总线是AHB(Advanced High-performance Bus)先进高性能总线,也叫做ASB(Advanced System Bus),速度高可连接芯片,或者搭载快速高效率的模块如内存,DMA;外设原创 2020-06-08 10:28:45 · 442 阅读 · 0 评论