c
zjn15000
这个作者很懒,什么都没留下…
展开
-
keil编译链接文件警告Pattern *.o(RAMCODE) only matches removed unused sections
从提示看是链接文件中,RAM中原先分配给代码存储的空间没有用上。解决办法:删除掉上图中红框里面代码;原创 2023-08-17 10:27:14 · 1400 阅读 · 0 评论 -
C语言基础夯实
按位右移>>之前比较熟悉无符号数右移,比如b101 >> 2 = b1,那么有符号数右移呢?-5 >> 2即 b11111011 >> 2 = b11111110 = 0有符号数右移左边的二进制位补1,无符号数右移是左边的二进制位补0。2. 按位与&和逻辑与&&的区别逻辑与是将要运算的两个数看作一个整体,而这个整体如果是0,则该数被定义成逻辑假(0);如果该数不为0(不管是正的还是负的),则被定义成逻辑真。3 &am.原创 2022-05-02 18:19:26 · 1049 阅读 · 0 评论 -
C语言动态内存管理
1.动态内存申请void *malloc(unsigned int size);其作用是在内存的动态存储区中分配一个长度为size的连续空间。此函数的返回值是分配区域的起始地址。例如:malloc(100);//开辟一个100个字节的临时分配域,返回值为其第一个字节的地址。地址的基类型为void,即不指向任何类型的数据,只提供一个地址。如果此函数未能成功的执行(例如内存空间不足),则返回空(NULL,即0)。在实际开发过程中,一般定义一个指针来指向动态分配的内存地址。例如:int *p=ma原创 2020-06-21 14:47:57 · 200 阅读 · 0 评论 -
STM32 DAC+TIMER+DMA输出正弦波
前段时间学习了STM32使用DAC模块输出正弦波的功能,在学习过程中遇到了一些问题,在此和各位分享。DAC是数字/模拟转换模块的简称,STM32中的DAC是12位数字输入,这个就决定了其精度。STM32的DAC模块具有两个通道,可单独进行转换,也就是说可以同时输出两个正弦波或其他波形。输出正弦波的原理简单讲就是每隔一定时间向DAC的数据寄存器写入数据,然后进行数据转换,输出不同电压,然后在时间轴上显示出波形。这里比较重要的一个公式就是数字量和模拟量的转换公式:STM32芯片内部有个参考电压:VREF原创 2020-06-20 09:55:23 · 9167 阅读 · 10 评论 -
结构体的位域操作方法
今天看代码看到如下一段,不明白结构体成员后面:11,:5的意思,经过百度后,才晓得这是结构体的位域操作方法。typedef union { int word; struct { int scan_period :11; int doze_times :5; int reserved31_16 :16; } bit;} SCAN_CTRL1_UN;下列一行代码表示scan_period这个成员变量在32bit中占据11bit.int scan_period :11;原创 2020-06-09 15:33:57 · 572 阅读 · 0 评论 -
C语言程序中接续符的使用
每一行后面的\斜杠,表明这一行还未结束,下一行与上一行是一起的。而且在c语言中,随便换行是会报错的。原创 2020-03-30 11:19:59 · 530 阅读 · 0 评论 -
嵌入式软件开发学习(一)
最近一直在学习ARM Cortex-M0 Cortex-M0+权威指南,在这做简单总结:以前玩STM32开发板,一直不明白例程中对外设为什么要定义结构体,但是看了这个书本后才明白,设置结构体在大型程序编程时能降低维护难度,并简化代码。(1)传统的应用指针定义和访问UART外设寄存器#define UART_BASE 0x40003000 //基地址#define UART_DATA ...原创 2020-03-24 14:03:31 · 448 阅读 · 1 评论