- 博客(9)
- 资源 (3)
- 收藏
- 关注
原创 <bug记录>STM32 HAL库lpuart低功耗串口通信错误/卡死
环境:使用STM32L073x HAL在stop模式下,使用lpuart接收数据,在2s的RTC定时器中断内解析串口数据。现象:程序运行一段时间后出现主程序卡死状态,在程序运行状态下该bug极难复现(可能一个月都不复现)。调试过程:由于单片机处于stop模式下,想要调试需要打开debug功能HAL_DBGMCU_DBG_EnableLowPowerConfig();一开始考虑可能是程序跑飞,将可疑的函数、程序放入仿真环境单元测试百万次均正常,接着在单片机环境下通过串口仿真器发送高频数据,之后
2022-04-06 17:01:51
1717
原创 <C语言>从零开始手写BootLoader--STM32L073/IAR/HAL库
从零开始手写BootLoader–STM32L073/IAR/HAL库一、测试平台:MCU:STM32L073V8T6(Cortex-M0+)固件库:HAL+STM CubeIDE:IAR For STM32二、实验目的使用BootLoader通过串口将程序bin文件烧录至单片机内,然后跳转到烧录位置运行程序。三、基础知识STM32L073V8T6的启动方式有三种:内置FLASH启动、内置SRAM启动、系统存储器ROM启动,通过BOOT0和BOOT1引脚的设置可以选择从哪中方式启动,这里选择
2021-08-06 10:31:52
2055
1
原创 <C语言> typeof 关键字与max(a,b)宏
<C语言> typeof 关键字与max(a,b)宏typeof 关键字与max(a,b)宏讲max(a,b)宏之前需要先讲解typeof关键字,不要心急,看完本片文章后相信你一定会有所收获ANSI C 定义了 sizeof 关键字,用来获取一个变量或数据类型在内存中所占的存储字节数。GNU C 扩展了一个关键字 typeof,用来获取一个变量或表达式的类型。如: int i ; typeof(i) j = 20; typeof(int *) a; int f();
2021-07-08 15:30:46
1331
3
原创 <C语言>数据结构:环形缓冲区RingBuffer
数据结构:环形缓冲区 当有大量数据的时候,我们不能存储所有的数据,那么计算机处理数据的时候,只能先处理先来的,那么处理完后呢,就会把数据释放掉,再处理下一个。那么,已经处理的数据的内存就会被浪费掉。因为后来的数据只能往后排队,如过要将剩余的数据都往前移动一次,那么效率就会低下了,肯定不现实,所以,环形队列就出现了。环形缓冲区是一项很好的技术,不用频繁的分配内存,而且在大多数情况下,内存的反复使用也使得我们能用更少的内存块做更多的事。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(
2020-11-19 16:12:41
1358
1
原创 <C语言>函数指针心得
函数指针函数指针最常见的两个用途:转换表(jump table)作为参数传给另一个函数函数名在使用时总是由编译器将它转换为函数指针回调函数这里有一个简单的函数:Node * search(Node* node,int const value){ while(node!=null) { if(node->value == value) break; node=node->next; } re
2020-11-19 16:11:06
297
1
原创 <C语言>格式转换
//大小端字节序转换//0x49000000->0x00000049//0x00000049->0x49000000uint32_t Uint32SwapEndian(uint32_t value){ return ((value & 0x000000FF) << 24) | ((value & 0x0000FF00) << 8) | ((value & 0x00FF00
2020-11-19 16:07:30
431
原创 <C语言>C语言实现状态机
ch2 C语言实现状态机 状态机模式适用于有限状态下程序按照逻辑循环执行,相较于在while循环中通过if else判断状态标志来执行相应的动作,状态机模式能够灵活的增加、减少状态,程序逻辑更为清晰 使用函数指针管理状态,每个状态执行函数在执行完之后,返回下一个状态执行函数的指针,判断state进而执行程序//函数指针重定义typedef int (*functpr)();//函数指针类型转换声明typedef functpr (*ptrfuncptr)();//定义起始状态、停止状态、状
2020-11-19 16:04:53
943
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人