STM32单片机
文章平均质量分 57
记录学习
可可斯蒂彳亍
这个作者很懒,什么都没留下…
展开
-
STM32-最新版本Keil-MDK出现的编译错误(core_cm3.c错误)
最新版本MDK没有预装ARM Compiler version5;而且使用ARM Compiler version6编译器出错的问题../CMSIS/CM3/core_cm3.c(445): error: non-ASM statement in naked function is not supported uint32_t result=0;原创 2022-09-14 10:43:05 · 5253 阅读 · 4 评论 -
STM32——使用串口传输数据时的注意事项
单片机通过串口向上位机发送数据的注意事项原创 2022-06-25 21:08:45 · 1211 阅读 · 0 评论 -
C语言——指针与地址的关系
可以看出数组a中元素在内存中存储方式是从低地址开始的,如下图方式:解释编译警告,即下面代码引起的警告:因为&a[0]为型,而q为型,赋值号两边指针类型不同,导致警告。指针变量类型一般和所指向的变量类型一致,就是为了取值和赋值时方便因为数组a中的数据是4字节数据,即每个数组元素都需要4个地址来存储,正常情况下我们也是定义一个4字节指针变量(这样的指针加一是直接跳4个地址,取值和赋值也是连续取(赋)4个地址的值),来指向存放数组元素的地址,如下图(a)所示;但我们如果想知道每个数组元素在内存中是如原创 2022-06-23 21:09:54 · 5172 阅读 · 5 评论 -
STM32串口寄存器USART_SR中的TC标志位
可以看到USART_SR寄存器复位值位0X00C0,而TC在位6,所以复位值置1。也可以用以下程序验证:2、3、4、TC位复位值为1,如果不清零可能会带来的问题当连续发送多个8位数据时,如果采用检测TC标志位置1作为发送完成,那么会导致第一个8位数据被覆盖,这里先用代码演示,之后解释原因:预想结果是把数组中的数据全部通过串口发送出去,但结果却如下所示:导致上述情况的原因在这部分代码:之前有说过,串口初始化后,TC标志位为1,这样会导致第一个循环中的循环直接跳出进入第二个循环,进而导致第一个原创 2022-06-18 20:40:30 · 7133 阅读 · 1 评论 -
C语言结构体的使用
C语言结构体的使用原创 2022-06-03 12:39:09 · 2641 阅读 · 1 评论 -
Keil5-MDK调用函数时代码自动补全功能及注意事项
Keil5-MDK版本调用函数代码补全功能...原创 2022-05-16 15:31:10 · 11213 阅读 · 5 评论 -
Keil-MDK版本中的C99 mode功能
使用Keil-MDK版本写代码时,定义变量的位置不恰当也会编译出错,如下所示:定义变量位置在头部,没有错误:int main(void){ int a; int b; //定义变量在头部 a=10; b=1; while(1) { }}这里两个警告是因为变量定义了没有使用定义变量位置不在头部,出错:int main(void){ int a; a=10; //执行语句之后定义变量b int b; b=1; while(1) {原创 2022-05-13 17:32:36 · 7318 阅读 · 0 评论 -
Keil5 MDK版本使用ST-LINK下载程序的方法及注意事项
ST-LINK在Keil软件中的使用原创 2022-05-11 17:30:03 · 7949 阅读 · 4 评论