![](https://img-blog.csdnimg.cn/20200427210602207.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
STM32 笔记
文章平均质量分 72
记录STM32的使用和一些应用
机器灵魂注入师
一名在不断精进的嵌入式软件开发工程师,很庆幸能从事自己喜欢的工作。
愿你要永远抱有一颗好奇之心。
愿你出走半生,归来仍是少年。
展开
-
空闲中断+接收中断实现串口数据的不定长接收 ---- 基于STM32 hal库
一、需求及实现思路需求我们经常遇到这样的场景:由于不确定对方通过串口发过来的数据有多长,我们就不好对这些不定长的数据进行处理,所以我们需要实现这个方式的策略。策略很多单片机(包括STM32)就提供了策略来因对这种需求,也就是利用空闲中断。思路是这样的:我们开启单片机的接收中断和空闲中断,在单片机接收据时,会触发中断,判断如果是接收中断,接收数据,并对数据进行计数。如果是由于一段时间没有...原创 2020-04-27 21:54:44 · 2739 阅读 · 2 评论 -
使用STM32hal库usart的接收中断分析及出现部分问题的解决
最近开始使用ST的hal库,这个库相较于之前的标准库,优缺点兼具吧,hal库封装了更多底层的细节,我们可以很轻易的实现我们需要的功能,但是由于封装了太多的细节,导致一旦出问题,你就很难发现问题,内部调用的复杂让你觉得懵逼。(一)hal库接收中断的分析这几天在使用hal库的USART,其中用到的是接收中断,官方推荐的使用接收中断的方式是:在初始化函数上面先开启接收中断(这里就不介绍串口...原创 2018-08-14 20:27:44 · 22327 阅读 · 6 评论 -
复制STM32hal库时出现一些库函数名未定义的错误
之前习惯了使用ST的标准库,所以是用STM32CUbeMX生成部分需要的代码复制到我之前建的一个比较完备的工程时(也是也是hal库构成的),出现了库的一些函数出现为命名的情况,我新建了一个ADC的代码,出现如下错误:错误一,原来是ADC的库函数没有被包含,在STM32Fxxx_hal_conf.h中相关的宏定义恢复。即把下图,变成现在还有两个错误,如下:后来查了很久...原创 2018-08-10 09:08:12 · 3983 阅读 · 3 评论 -
STM32 HAL库的使用
下面是我在使用STM32的hal库时,发现一些比较好的使用笔记,转载一下,便于以后查阅。同时在使用hal库时,发现了一些问题,自己备注一下。一、调试出错。1、使用STM32CubeMX生成的工程无法使用Jlink仿真,出现如下的错误命令提示:***JLink Error: Bad JTAG communication: Write to IR: Expected 0x1, got 0...原创 2019-02-17 09:38:10 · 1768 阅读 · 0 评论 -
STM32CubeMX图形化配置软件使用 -- 各个外设的配置及其注意事项
1、RCC(reset and clock control):复位与时钟控制由上图可知,可以选择三个时钟来源:1、Disable(失能) ,意味着板子要选择内部时钟。 ...原创 2019-02-15 18:51:06 · 4121 阅读 · 0 评论 -
STM32的中断优先级说明(抢占式与响应式优先级)
注:查看寄存器请看《ARM Cortex-M4权威指南》,由于本人采用库开发,所以就不深究寄存器了。总结资料来源于原子的《STM32F4库开发指南》,总结于此,方便查找。STM32F4 的中断分组:STM32F4 将中断分为 5 个组,组 0~4。该分组的设置是由 SCB->AIRCR 寄存器的 bit10~8 来定义的。如下图:通过这个表,我们就可以清楚的看...原创 2018-03-28 22:18:24 · 25168 阅读 · 0 评论 -
STM32的命名规则
STM32的命名规则如下:原创 2018-02-06 15:39:19 · 493 阅读 · 0 评论 -
STM32的启动模式讲解
我们知道,STM32中给我们提供了BOOT0和BOOT1两个引脚,他们的作用是用来设置STM32的启动方式。BOOT0和BOOT1引脚的高低共同决定了STM32的启动方式。 BOOT0 BOOT1 启动模式说明0X 用户闪存存储器原创 2017-10-03 19:24:45 · 705 阅读 · 0 评论 -
STM32的启动文件的选择(由容量大小决定)
给STM32写程序时,我们需要在工程文件中加入厂家提供的启动文件(这里以STMf10x系列为例),里面包含的是启动代码,启动代码是一段和硬件相关的汇编代码。是必不可少的!这代码主要作用如下: 1、堆栈(SP)的初始化; 2、初始化程序计数器(PC); 3、设置向量表异常事件的入口地址; 4、调用 main 函数。 这些都是准备工作,如果看不懂目前初原创 2017-10-03 20:06:39 · 9009 阅读 · 0 评论