|
现象:/ ^; F4 E: ]7 p g STM32使用串口IAP进行跳转,发现APP程序用freeos编写的时候,程序跳转完成后就死机了。# e- f& t) q: _1 p3 G# h5 f# F0 N IAP程序在跳转前都关闭了中断和复位了使用的外设。已经验证跳转到裸机程序没有问题。! A" F, Q: v- P y * W! _( a' ~! q& E- g& [/ J FREEOS的程序在main函数开始就进行了开启中断和复位向量表。) q' ?0 v2 g$ O( Y1 S* V* S int main(void) {4 ]% K9 x5 @% e4 \# T /* USER CODE BEGIN 1 /* z" i0 D A5 }0 o! Y5 w __enable_irq(); SCB->VTOR = FLASH_BASE | 0X00004000; / USER CODE END 1 */7 v B$ a: ^5 a; T: ^! p /…略…" O" k+ ^) W- \9 K& E% J% | 方案: 经过跳转,将__enable_irq();这个函数设置到主循环开始前可以解决。' l% ^% k( L: p 5 v g8 C1 _) O: Y: m /* Call init function for freertos objects (in freertos.c) / MX_FREERTOS_Init(); / Start scheduler */ osKernelStart(); __enable_irq();9 p4 W% x& ~6 v' Z5 c; |6 ]6 k1 k ; ^, d# j6 | N7 ^$ r% b /* We should never get here as control is now taken by the scheduler / / Infinite loop /# a U2 V2 b8 d+ q6 R3 a / USER CODE BEGIN WHILE /, x" ]' \* @* h) r- J/ w while (1) { n( a! C1 p7 K' o, a4 B% _% Y, u8 v0 T / USER CODE END WHILE */ ) e9 Y3 Z6 O" \4 b: _* x3 G6 K /* USER CODE BEGIN 3 */* K( H2 e# }, O; t. P. c- a4 ]% K } /* USER CODE END 3 */ ————————————————- V. e( a! c7 G! x$ z. e 版权声明:路过羊圈的狼% N0 a0 f! ]! x- W- z) t7 d2 w ) c6 \% L& X6 U ?# L. L5 q9 L, A: p: e 如有侵权请联系删除; ^+ R, @/ c$ v 3 M. N1 t% N5 O* S5 v0 ~ |
【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 功能的使用
微信公众号
手机版