|
现象: STM32使用串口IAP进行跳转,发现APP程序用freeos编写的时候,程序跳转完成后就死机了。 IAP程序在跳转前都关闭了中断和复位了使用的外设。已经验证跳转到裸机程序没有问题。6 S8 n5 W$ D$ c7 S4 u B9 a5 r! q" c7 B & U" z3 u: N# G2 Z) a( f# ?8 s FREEOS的程序在main函数开始就进行了开启中断和复位向量表。 int main(void)8 O) k9 ^+ V# _2 D4 s# ~, n! y2 D { /* USER CODE BEGIN 1 / __enable_irq(); SCB->VTOR = FLASH_BASE | 0X00004000; / USER CODE END 1 */7 E/ G, o/ c& i" N# ]+ ^ /…略… 方案:0 ]% \& _ l2 f- `6 g 经过跳转,将__enable_irq();这个函数设置到主循环开始前可以解决。 /* Call init function for freertos objects (in freertos.c) / MX_FREERTOS_Init();* i9 p1 s8 Q- m; O / Start scheduler */ osKernelStart();: D8 @6 C5 V) E# C8 J' @ __enable_irq(); d6 y3 e+ T2 i, |4 I /* We should never get here as control is now taken by the scheduler /' r/ t/ R$ y/ x% h1 g, z / Infinite loop / / USER CODE BEGIN WHILE /! @" g& U3 r/ m. X5 f% D while (1). P% ?- s4 p+ F s) R {) b' w: |4 l; v/ o, ^: K% k/ V / USER CODE END WHILE */ q" ~, w5 d0 r3 G% ^- y1 t /* USER CODE BEGIN 3 */4 Y3 N" a) O& U9 }9 r9 C* \9 V }) Q* G6 F) \9 | /* USER CODE END 3 */ ———————————————— 版权声明:路过羊圈的狼, t) C0 r8 N. i) y1 D; J% Q 如有侵权请联系删除 7 p/ x; {$ w' B) N3 M3 x |
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
Keil-MDK 在线调试设置断点的高级用法
请教下STM32N6570 怎么把分辨率改成320x240并可以全屏显示
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
使用STM32 MCU和MPU连接PDM数字麦克风
分享STM32资料-采用 STM32U031R8 MCU 的 STM32 Nucleo-64 开发板,官方资料,数据手册等资料
HRTIM 指南
使用 STM32 的 DWT 单元监控内存
DAC,COMP,HRTIM Fault 功能的使用
微信公众号
手机版