“bsp”
即Board Support Packet (板级支持包):跟特定的开发板有关
头文件中的硬件宏定义
在编写程序的过程中,要考虑更改硬件环境的情况,一般把硬件相关的部分使用宏来封装,若更改了硬件环境,只修改这些硬件相关的宏即可,这些定义一般存储在头文件
“Doxygen” 注释规范
这是一种名为“Doxygen” 的注释规范, 如果在工程文件中按照这种规范去注释,可以使用Doxygen软件自动根据注释生成帮助文档
条件编译
防止头文件重复包含,编译时就不会出现“redefine(重复定义)”的错误了
C语言续行符
代码中的“\”是C 语言中的续行符语法,表示续行符的下一行与续行符所在的代码是同一行,在“\”后面不能有任何字符(包括注释、空格),只能直接回车
通过条件编译,注释掉代码
编译器优化
这段代码在每个结构体成员前增加了一个“__IO”前缀,它的原型在这段代码的第一行,代表了C 语言中的关键字“volatile”,在C语言中该关键字用于表示变量是易变的,要求编译器不要优化。这些结构体内的成员,都代表着寄存器,而寄存器很多时候是由外设或STM32 芯片状态修改的,也就是说即使CPU 不执行代码修改这些变量,变量的值也有可能被外设修改、更新,所以每次使用这些变量的时候,我们都要求CPU去该变量的地址重新访问。若没有这个关键字修饰,在某些情况下,编译器认为没有代码修改该变量,就直接从CPU 的某个缓存获取该变量值,这时可以加快执行速度,但该缓存中的是陈旧数据,与我们要求的寄存器最新状态可能会有出入
stdint.h,uint32_t,uint16_t…
这是一个ANSI C文件,是独立于处理器之外的,这些新类型定义屏蔽了在不同芯片平台时,出现的诸如int的大小是16位,还是32位的差异。建议使用stdint.h中的类型定义等。
u8、u16、u32这样的类型,分别表示的无符号的8 位、16位、32位整型,它们定义的位置在STM32f10x.h文件中
RS-232- TTL“电平转换芯片”(MA3232\SP3232芯片)
RS-232电平标准的信号不能直接被控制器直接识别,这些信号会经过一个“电平转换芯片”(MA3232\SP3232芯片)转换成控制器能识别的“TTL标准”的电平信号,才能实现通讯
USB-TTL“电平转接芯片”(CH340G、CH340、PL2303、CP2102、FT232)
CH340G、CH340、PL2303、CP2102、FT232:电平转接芯片,USB转TTL的IC,利用USART实现开发板与电脑通信
华邦W9825G6KH
SRAM适合做高速缓存或MCU内部的RAM。STM32最常用的是华邦W9825G6KH
WM25QXX
SPI FLASH
头文件包含方式
第二种方法不用再在keil添加头文件路径
IS62WV51216
STM32F103/F407常用的IS62WV51216这颗SRAM芯片
喂狗
当独立看门狗IWDG的值从某个值一直减到0时,系统会产生一个复位信号(IWDG_RESET)。如果在计数没减到0之前,刷新了计数器的值的话,那么就不会产生复位信号,这个动作就是喂狗
窗口看门狗计数器的值必须在上窗口和下窗口之间才可以喂狗
程序跑飞
比如一个程序正常运行的时间是50ms,在运行完这个段程序之后紧接着进行喂狗,设置独立看门狗的定时溢出时间为60ms,比需要监控的程序50ms多一点,如果超过60ms还没有喂狗,那就说明监控的程序跑飞了,那么就会产生系统复位,让程序重新运行
一个程序段正常运行的时间是50ms,在运行完这个段程序之后紧接着进行喂狗,如果在规定的时间窗口内还没有喂狗,那就说明我们监控的程序跑飞了,那么就会产生系统复位,让程序重新运行
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/yang_electric/article/details/132058826
|