完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
问题解决记录:
STM32CubeMX 带FreeRTOS,生成 Keil工程,程序下载无法运行,死机; 芯片:STM32F401RCT6 库版本:HAL_1.51 cubeMX:V6.2.0 配置好外设,生成工程均无问题; 在默认函数中加入串口发送代码 void StartDefaultTask(void *argument) { /* USER CODE BEGIN StartDefaultTask */ /* Infinite loop */ for(;;) { HAL_UART_Transmit(&huart1, "HELLO1 STrn",10,1000); // HAL_Delay(1000); osDelay(1000); } /* USER CODE END StartDefaultTask */ } 编译运行后,发现程序可以发送一次数据,随后软件死机。 仿真查看,总是卡在: SysTick_Handler PROC EXPORT SysTick_Handler [WEAK] B . ENDP 这是中断跳转的汇编接口。 解决过程: 既然没跳转成功,是否是SysTick_Handler函数没定义呢? 全局查找: 位于:CMSIS_OS2.c中,确实灰色的。 是SysTick没定义么? 经过查找:在CORE_CM4.h 文件中存在定义 毕竟是cubeMx生成的工程,需要代码写入用户区, 所以找了CMSIS_OS2.c 包含的头文件,就找到了FreeRTOSCondig.h,并且加入 #include /* IMPORTANT: After 10.3.1 update, Systick_Handler comes from NVIC (if SYS timebase = systick), otherwise from cmsis_os2.c */ #define USE_CUSTOM_SYSTICK_HANDLER_IMPLEMENTATION 0 /* USER CODE BEGIN Defines */ /* Section where parameter definitions can be added (for instance, to override default ones in FreeRTOS.h) */ #include "STM32f401xc.h" /* USER CODE END Defines */ 此刻编译后,正常输入运行,串口正常1S一次 循环打印输出。 存在困惑: #define USE_CUSTOM_SYSTICK_HANDLER_IMPLEMENTATION 0 这个宏定义起什么作用,没有预编译任何代码 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1786 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1622 浏览 1 评论
1089 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
730 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1680 浏览 2 评论
1942浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
739浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
576浏览 3评论
598浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
561浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 17:26 , Processed in 0.739758 second(s), Total 47, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号