|
现象:9 u: M4 ?! g, Q" h% k0 ` STM32使用串口IAP进行跳转,发现APP程序用freeos编写的时候,程序跳转完成后就死机了。5 m9 t. G3 T) v4 f IAP程序在跳转前都关闭了中断和复位了使用的外设。已经验证跳转到裸机程序没有问题。' {9 @3 |. i7 L% g+ t# N/ U, T 1 }. C4 b% F7 ?; e + T( i4 t3 A4 \3 ^; E FREEOS的程序在main函数开始就进行了开启中断和复位向量表。7 j" R7 Z. F5 O" b9 y int main(void)6 o! {1 S9 |, e6 e/ I b& q { /* USER CODE BEGIN 1 / __enable_irq();( [ b R2 i X2 \( o SCB->VTOR = FLASH_BASE | 0X00004000;6 \/ f6 H8 V) @8 N; N2 F8 c / USER CODE END 1 */; D: u( I$ I5 I4 E /…略… 0 v9 c1 {% V8 z2 @: M" ` 方案: 经过跳转,将__enable_irq();这个函数设置到主循环开始前可以解决。 [. ]" q6 T7 |2 _2 }% v# J /* Call init function for freertos objects (in freertos.c) / MX_FREERTOS_Init(); / Start scheduler */ osKernelStart();9 }8 N6 }/ I) K3 g __enable_irq();- q& X# a$ P) Y1 T) z- Z 1 F. z; u2 m* f0 S + D+ h8 j" w2 [7 t; ~0 |2 U' j /* We should never get here as control is now taken by the scheduler / / Infinite loop /. J; T ^! U3 @ / USER CODE BEGIN WHILE /) P5 y* F' s2 w( S' M while (1)+ S. N! c! y2 m {1 m) i4 \5 D2 m* K' ` / USER CODE END WHILE */' D" Y5 h f* p; ] + C- Y1 I5 D7 z2 F ; ?: F1 l$ Z# j) `5 c /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ ————————————————5 _& j1 ~) N. R2 v. u 版权声明:路过羊圈的狼 - B. v3 R1 m4 O# y8 n% L 如有侵权请联系删除0 k' i3 H' H! y; w/ A |
【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 功能的使用
微信公众号
手机版