![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
stm32笔记
文章平均质量分 69
前面的题目以后再来探索吧
这个作者很懒,什么都没留下…
展开
-
关于IAP跳转部分的代码的理解
ApplicationAddress + 4 即为0x0800 3004 ,里面放的是中断向量表的第二项“复位地址” JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);也就是说,这句话即通过推断栈顶地址值是否正确(是否在0x2000 0000 - 0x 2000 2000之间) 来推断是否应用程序已经下载了,由于应用程序的启动文件刚開始就去初始化化栈空间,假设栈顶值对了,说应用程已经下载了启动文件的初始化也运行了;这个看上去有点奇怪;原创 2024-06-05 20:39:08 · 210 阅读 · 0 评论 -
关于stm32的软件复位
这里有一个要注意的问题:从SYSRESETREQ 被置为有效,到复位发生器运行复位命令, 往往会有一个延时。所以,最好在发出复位请求前,先把 FAULTMASK 置位。软件复位并不会擦除存储器中的数据,它只是将处理器恢复到复位状态,即中断使能位被清除,系统寄存器被重置,但RAM和Flash存储器中的数据保持不变。相同的官方 core_cm3.h 文件中也直接提供了该函数。在官方软件库的 core_cm3.h 文件中 直接提供了 系统复位的函数。把上面这两个函数写在一起就能够实现软件复位了。原创 2024-06-05 20:25:39 · 919 阅读 · 0 评论 -
大端存储和小端存储
大端模式:即高位字节排放在内存地址低地址端,低位字节排放在内存的高地址端。小端模式:即低位字节排放在内存地址低地址端,高位字节排放在内存的高地址端。原创 2024-06-04 17:31:19 · 256 阅读 · 0 评论 -
stm32 启动文件分析
启动文件前面的介绍启动文件是后缀为.s的汇编语言文本文件,每行前面的分号表示此行是注释行。启动文件主要完成如下工作,即程序执行过程:- 设置堆栈指针SP = __initial_sp。- 设置PC指针 = Reset_Handler。- 设置中断向量表。- 配置系统时钟。- 配置外部SRAM/SDRAM用于程序变量等数据存储(这是可选的)。- 跳转到C库中的 __main ,最终会调用用户程序的main()函数。原创 2024-05-29 20:37:27 · 1117 阅读 · 0 评论 -
IAP串口升级
IAP是(In Application Programming)即应用编程,IAP是指用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。通俗的来说,IAP是将Flash划分为两部分,两部分区域各存放一个程序,一个叫Bootloader(引导加载程序),另一个叫user application(用户应用程序),下文简称APP。原创 2024-05-22 17:35:31 · 235 阅读 · 1 评论 -
基于STM32的模拟SPI通讯
1.CS:片选线也叫NSS,当有多个SPI设备与SPI主机相连时,设备的其他信号线SCK、MOSI、MISO同时并联到相同的SPI总线上(无论由多少个从设备,都共用这3条总线),而每个从设备都有独立的CS片选线,有多少个从设备就有多少个CS线。SPI通讯无设备地址,当主机要选择从设备时,把该从设备的CS线拉低该从设备就会被选中,片选有效,主机就可以开始和从设备进行SPI通讯。当CPOL=1,即空闲时为高电平,从高电平变为低电平再变为高电平,第二个时钟边沿(上升沿)即进行采样。器、数字信号解码器等设备之间。原创 2024-03-07 20:30:40 · 1275 阅读 · 0 评论 -
GPIO应用之蜂鸣器驱动
蜂鸣器主要有电磁式和电压式两种, 而且都有无源蜂鸣器和有源蜂鸣器两类。开发板使用的是电磁式无源蜂鸣器, 而有源和无源的区别是有源蜂鸣器内部自带振荡器,给个电压就能发声, 但频率是固定的,只能发出一种声音,而无源蜂鸣器频率可控,给个方波才可以发声, 并且根据不同频率发出不同的声音效果。原创 2024-03-06 21:25:43 · 597 阅读 · 0 评论 -
GPIO应用之按键FIFO驱动
eg:FIFO机制和状态机一样,都是在裸机编程中非常重要的编程思想。FIFO是先入先出的意思,即谁先进入队列,谁先出去。比如我们需要串口打印数据,当使用缓存将该数据保存的时候,在输出数据时必然是先进入的数据先出去,那么该如何实现这种机制呢?首先就是建立一个缓存空间,这里假设为10个字节空间进行说明。从上图可知,使用FIFO就先要定义一个结构体,来储存他的三个成员。缓存区Buf[]数组,缓存区写指针Write,缓存区读指针Read。初始状态下,Read=Write=0;//缓存区//缓存区写指针。原创 2024-03-02 00:21:43 · 1168 阅读 · 0 评论 -
STM32定时器中断类型分析
TIM_IT_Update:更新中断,计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)TIM_IT_Trigger:触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)调用TIM_GetITStatus()函数来查看是否有中断发生,入口参数都是平等的。TIM_IT_CC1~4:都是捕获/比较中断,貌似都是平等的,即输入捕获,输出比较。使用的时候都是调用函数TIM_ITConfig()来使能指定的中断类型。可能就是不同的事件导致中断的发生略有不同。还是得多看数据手册!原创 2023-10-15 17:26:09 · 194 阅读 · 1 评论 -
stm32 标准库 TIM输入捕获模式测频率(上)
【代码】stm32 标准库 TIM输入捕获模式测频率(上)原创 2023-10-07 22:43:16 · 56 阅读 · 1 评论