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