|
之前想试试看板卡卡死的原因是否是flash擦除的时候触发中断挂起正好卡死的 因为网上也看过很多相关的言论 于是实验 将flash擦除函数放在sram里执行 同时进行GPIO翻转 将flash擦除函数替换为 attribute((section(".RAM_CODE"))) void SRAM_ErasePageAndBlink(uint32_t pageAddr) { static uint32_t count = 0; count++; // 启动页擦除 FLASH->CR |= FLASH_CR_PER; FLASH->AR = pageAddr; FLASH->CR |= FLASH_CR_STRT; // 改 TIM17 计数,让他触发 TIM17->CNT = TIM17->ARR; // 改 DMA 计数,让他完成 NVIC_SetPendingIRQ(TIM17_IRQn); DMA2_Channel4->CNDTR = 1; TIM5->CNT = TIM5->ARR; if(count >= 10) { GPIOE->ODR ^= GPIO_PIN_5; count = 0; } while(FLASH->SR & FLASH_SR_BSY); FLASH->CR &= ~FLASH_CR_PER; } 这样计划是可以实现在擦除的时候把中断挂起 看看CPU会不会卡死 遗憾的是 PE5的LED会正常反转 flash正常擦除 同时这并不会导致CPU卡死 想了解一下平常所说的 擦除flash时触发中断会导致cpu卡死 到底是什么原因导致CPU卡死呢 在实验的时候发现这种操作挺危险的 处理不好很容易进hardfault 比如没有等待擦除完就直接执行指令 |
STM32F407VET6,使用cubeIDE下载跑不起来
FLASH擦除轮询等待时CPU真的会轮询吗
STM32F417 RTC读取亚秒寄存器
HAL_I2C_Mem_Read 一直返回 BUSY
STM32F103C8T6 上电后无法通过串口发出数据的问题?
STM32F3系列SDADC外部触发 DMA运输的bug
STM32F405ZGT6 批次22+ 问下这颗料,60度烘烤12小时后,出现鼓包,是怎么回事? 原厂有标准的烘烤温度范围 跟时长范围吗?
KEILMDK每次都要手动选Reset and Run吗 不然下载到板子上得重启电源才行 求解答
非官方开发板第一次下载成功,之后就各种失败
STM32F103的USB的虚拟串口,串口助手打开的时候会收到两条数据,第一条数据是前5秒串口助手未打开时发送的,这怎么解决?
微信公众号
手机版
1.实时中断来不及处理
2.通信超时
3.看门狗喂狗不及时
4. 控制环中断抖动或失步
中断向量表
ISR
ISR 调用到的函数,以及会访问的相关数据/常量
上面所说的风险操作不能用于工程实践中,代码的执行不能阻断自己的后续执行