|
之前想试试看板卡卡死的原因是否是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 比如没有等待擦除完就直接执行指令 |
翻找出来一块老板子
大一新生,这个项目涉及哪些知识点?
STM32H5F/E 相比 STM32F4 系列最大的优势是什么?
STM32F103 USB虚拟串口,采用的官方库非HAL库文件,过一段时间会断开链接
STM32F429 跑起来了
KEILMDK每次都要手动选Reset and Run吗 不然下载到板子上得重启电源才行 求解答
寻求 资源互换
stm32 f411偶发性无法启动大神求助
STM32F3系列SDADC外部触发 DMA运输的bug
使用STM32F3 Discovery连接USB
微信公众号
手机版
1.实时中断来不及处理
2.通信超时
3.看门狗喂狗不及时
4. 控制环中断抖动或失步
中断向量表
ISR
ISR 调用到的函数,以及会访问的相关数据/常量
<br /> <br />
上面所说的风险操作不能用于工程实践中,代码的执行不能阻断自己的后续执行
你关心的重点应该是有没有一个固定的卡死机制存在,是吧。
肯定没有必然出现卡死的机制存在,但有可能出现卡死情况。
比方基于中断方式的ADC,因为临时堵塞导致数据没法达到预期值,影响程序的逻辑判断。
或者,因为临时导致正常情况下不会出现的溢出或出错事件,触发了中断,但中断里又根本没有相关标志的清零整理,导致FLASH完毕后中断无限循环的跑,卡死正常程序。这都是有真实案例发生的。