STM32
文章平均质量分 73
wangwen18
这个作者很懒,什么都没留下…
展开
-
STM32上实现驱动注册initcall机制(类linux)
如果我们把要初始化函数的地址按照顺序排列在一起,我们只要拿到第一个函数的地址,那么我们就可以依次拿到其它函数的地址,然后去执行相应的函数:1.首先需要定义一个函数指针,我们的初始化函数都必须按照这个格式写2.定义一个 section 区域用来存放我们的函数指针3.按照顺序来存放函数指针此函数形参为void,返回值类型int后面我们自己的初始化函数也必须是这种格式sectionconst##操作是连接左右两边的字符串,这样就可以定义前缀是"_aini_call。原创 2023-11-03 11:48:41 · 245 阅读 · 0 评论 -
回调函数,函数指针的使用
/定义变量并且初始化 ARM_DRIVER_USART Driver_USART1 = {定义了一个结构体变量,并且对三个成员进行初始化赋值。//定义的函数 //初始化函数的参数是一个函数指针 int32_t USART1_Initialize(ARM_USART_SignalEvent_t cb_event) {第三步定义的三个结构体成员初始值是指向我们这里定义的三个函数。原创 2023-05-15 16:07:32 · 228 阅读 · 0 评论 -
断言的使用
调试代码经常会有跑崩的时候,当整机调试是出问题特别让人崩溃,断言机制能很好的定位由于参数错误导致的系统异常的情况。在代码重要的代码区,添加断言,相当于对出入参数做了预判操作,当参数不符合条件时,程序不再继续执行,同时打印错误信息。原创 2023-05-11 14:52:56 · 75 阅读 · 0 评论 -
HardFault_Handler问题查找方法
STM32出现HardFault_Handler故障的原因主要有两个方面: 1、内存溢出或者访问越界。这个需要自己写程序的时候规范代码,遇到了需要慢慢排查。 2、堆栈溢出。增加堆栈的大小。 出现问题时排查的方法: 发生异常之后可首先查看LR寄存器中的值,确定当前使用堆栈为MSP或PSP,然后找到相应堆栈的指针,并在内存中查看相应堆栈里的内容。由于异常发生时,内核将R0~R3、R12、LR、P...转载 2022-04-19 14:10:01 · 6855 阅读 · 0 评论