|
现象: STM32使用串口IAP进行跳转,发现APP程序用freeos编写的时候,程序跳转完成后就死机了。' J* S/ x/ [6 E; u/ z) ? IAP程序在跳转前都关闭了中断和复位了使用的外设。已经验证跳转到裸机程序没有问题。* d9 s N3 R# m & r0 E& b1 N, d ^7 p FREEOS的程序在main函数开始就进行了开启中断和复位向量表。 int main(void) {2 ?; U8 _: V3 w3 H9 i3 W1 j /* USER CODE BEGIN 1 / __enable_irq();, ]# t0 W3 \; z" Z/ \4 ], a$ i* O SCB->VTOR = FLASH_BASE | 0X00004000; / USER CODE END 1 */ C# @+ h$ j* D3 X# F; ^/ e /…略… 方案:6 M+ n, ^# X$ e$ p' a 经过跳转,将__enable_irq();这个函数设置到主循环开始前可以解决。% r+ e! S6 z ~2 E6 Y: E) [! u 4 T7 A' R" _4 |5 ~4 F( O /* Call init function for freertos objects (in freertos.c) /. R: i7 X; w" |2 y6 s MX_FREERTOS_Init(); / Start scheduler */! W# W3 i' v* ?! ~ osKernelStart(); __enable_irq(); 5 |- K0 j1 M& s( ?" c3 A0 Q /* We should never get here as control is now taken by the scheduler /6 v' _& r0 V0 f4 d* _ / Infinite loop /. K: _2 S( g; j# C1 @: D6 x# c / USER CODE BEGIN WHILE / while (1) {( i7 c0 q8 p$ C6 I( t/ Z1 q5 a# } / USER CODE END WHILE */ 9 H/ E. u: x3 {' q, u5 G /* USER CODE BEGIN 3 */+ Q; Q* T: L# G } /* USER CODE END 3 */( x& ^7 ?: Z" I/ _ ———————————————— 版权声明:路过羊圈的狼7 T( v% | }+ |! X$ X( V' s 2 F$ h: ]3 V) S3 Y 如有侵权请联系删除 ! v9 t6 l+ K0 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 功能的使用
微信公众号
手机版