- 博客(13)
- 收藏
- 关注
原创 STM32用KEIL调试程序进入HardFault_Handler
死机程序语句定位:在硬件中断函数HardFault_Handler里的while(1)处打调试断点,程序执行到断点处时点击“STOP”停止仿真。情况:在程序执行时用到一个数组,这个数组的值的从EEPROM中读出的。发现一用这个数组,程序就卡死,后在keil调试模式下发现程序进入到HardFault_Handler,在While(1)中死循环了。原因分析:EEPROM这块元器件是全新的,在上电时数据全为65535,数组读出后再+1自然就越界了,全新EEPROM上电后记得重新写一下数据。内存溢出,访问越界;
2023-07-31 17:02:24 1129 1
原创 QP 时间事件不起作用
在对应的活动对象变量初始化函数中,没有添加相应的事件函数,导致创建时间事件没有起作用。在MasterControl_ctor中添加。发现时间事件到期后不会执行相应的操作。而是会自动回到初始化状态 从头开始。在QP中创建一个时间事件。
2023-05-09 15:50:02 141
原创 iic 出现busy状态
使用stm32 硬件iic 连接eeprom 调试过程中发现IIC一直处于busy状态。解决方法:在初始化中加入如下代码 主要是通过SWRST寄存器复位 使得BUSY位清零。看了网上几篇文章后分析应该是EEPROM通讯被意外中断造成的。
2023-03-20 17:13:36 1561
原创 keil调试模式下能运行 烧录到板子中不能运行
在所有硬件条件都检查正确的情况下点击魔术棒Reset and Run 如果没勾上的话,也会出现这种情况。
2022-05-25 16:17:43 2536 5
原创 L6218E: Undefined symbol __HAL_UART_DISABLE_IT (referred from stm32f4xx_ha
试过网上很多种方法,同一个.h文件里的其他函数都能用,就一个函数不行。偶然发现两个函数,开头下划线长短有点不太一样,才知道是主函数里的那个下划线太短了,改正后就好了
2022-05-16 13:35:01 862
原创 STM32F4中断优先级NVIC管理
一、NVIC中断优先级分组STM32F4XX/STM32F41XX 共有92个中断,包括10个内核中断和82个可屏蔽中断,具有16级可编程的中断优先级,常用的为82个可屏蔽中断。10个内核中断部分可屏蔽中断中断管理方法:首先,对STM32中断进行分组,分为组0-4。同时,对每个中断设置一个抢占优先级和一个响应优先级级别。分组配置是在寄存器SCB->AIRCR中配置,AIRCR的第8、9、10位用来确定分配结果。抢占优先级&响应优先级的区别:1.
2022-05-12 16:25:20 3118
原创 STM32串口通信基础知识
串行通信按照传输方向可分为:1.单工(单车道,不可逆行)2.半双工(一条车道可逆行,但是同一时刻只能有一个方向的数据通过)3.全双工(双车道,数据即可以发送也可以接收)按照通信方式可分为:1.带时钟的同步通信传输方式,如SPI、IIC2.不带时钟的异步通信传输方式,如UART(通用异步收发器),单总线等STM32的串口异步通信需要定义的参数(stm32f4xx 一般支持6个UART)起始位数据位(8位或9位)奇偶校验位(第9位)停止位(1,15,2位)
2022-05-12 13:53:37 318
原创 2021-04-28
C语言中return出去的值 清零我目前学到两种方法:一,直接在函数内开始时赋值return=0。举例如图,但是我在实际使用中发现清零太快,要执行的动作还没执行完就清零了。二:把key_return变成全局变量 这样就可以在调用到返回值的函数段内直接清零,故能够在一系列动作执行完成后清零。...
2021-04-28 11:59:41 207
原创 2021-04-27
MSP430G2553 通过查询方式实现按键消抖,长按,短按#include <msp430g2553.h>volatile unsigned int flag=0 ;void main(void){ WDTCTL = WDTPW + WDTHOLD; P1DIR = BIT0 + BIT6; P1OUT = BIT3; P1REN |= BIT3; while (1) { if (!(P1IN & ...
2021-04-27 21:49:55 74
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人