- 博客(11)
- 收藏
- 关注
原创 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
6219
5
原创 C语言——指针与地址的关系
可以看出数组a中元素在内存中存储方式是从低地址开始的,如下图方式:解释编译警告,即下面代码引起的警告:因为&a[0]为型,而q为型,赋值号两边指针类型不同,导致警告。指针变量类型一般和所指向的变量类型一致,就是为了取值和赋值时方便因为数组a中的数据是4字节数据,即每个数组元素都需要4个地址来存储,正常情况下我们也是定义一个4字节指针变量(这样的指针加一是直接跳4个地址,取值和赋值也是连续取(赋)4个地址的值),来指向存放数组元素的地址,如下图(a)所示;但我们如果想知道每个数组元素在内存中是如
2022-06-23 21:09:54
5310
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
7754
2
原创 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
9531
原创 单片机在Keil环境下定义的变量都存储到哪去了?(以STC89C52RC为例)
单片机SRAM和Flash程序存储器。data、idata、pdata、xdata、code修饰变量的区别
2022-04-28 12:28:42
3377
4
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人