完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
IAP程序参考ST官方例程,只是做了开发板的视频,app程序是一个非常简单的程序,只配置了uart作为调试信息输出。app main函数如下:
int main(void) { __disable_irq(); HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_USART1_UART_Init(); printf("!!!!!!!!!inintt okrn"); MX_tiM14_Init(); HAL_Delay(5); printf("!!!!!!!!!dddrn"); while(1) { } } IAP跳转部分代码为: if (((*(__IO uint32_t*)APPLICATION_ADDRESS) 0x2FFE0000 ) == 0x20000000) { /* Jump to user application */ JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS + 4); //printf("JumpAddress:0x%x,msp:0x%xrn",JumpAddress,*(__IO uint32_t*) APPLICATION_ADDRESS); JumpToApplication = (pFunction) JumpAddress; /* Initialize user application's Stack Pointer */ HAL_RCC_DeInit(); app_nvic_deinit(); __disable_irq(); __set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS); JumpToApplication(); } 现在跳转后出现的现象是:HAL_Delay前的打印信息能够正常输出,HAL_Delay后的则异常,从ST例程的readme.txt中有如下描述: @note Care must be taken when using HAL_Delay(), this function provides accurate delay (in milliseconds) based on variable incremented in SysTick ISR. This implies that if HAL_Delay() is called from a peripheral ISR process, then the SysTick interrupt must have higher priority (numerically lower) than the peripheral interrupt. Otherwise the caller ISR process will be blocked. To change the SysTick interrupt priority you have to use HAL_NVIC_SetPriority() function. 然后修改了中断优先级,以前优先级都为0,现在把systick以外的中断优先级修改为4,systick为0,修改后的优先级为: HAL_NVIC_SetPriority(MemoryManagement_IRQn, 4, 0); HAL_NVIC_SetPriority(BusFault_IRQn, 4, 0); HAL_NVIC_SetPriority(UsageFault_IRQn, 4, 0); HAL_NVIC_SetPriority(SVCall_IRQn, 4, 0); HAL_NVIC_SetPriority(DebugMonitor_IRQn, 4, 0); HAL_NVIC_SetPriority(PendSV_IRQn, 4, 0); HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); 用修改后的app程序测试,跳转后现象是一样的,都是HAL_Delay前的正常,HAL_Delay后没有执行。 问了ST FAE,回复是应用程序问题,但是应用没有其他代码了。只有注释掉HAL_Delay就正常。 |
|
相关推荐
1个回答
|
|
HAL_DELAY()对应systic的中断服务程序。 跳转到APP后,向量表重新映射,所以新的中断服务程序中也需要对应的函数内容才能运行。
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1781 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1085 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1680 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
732浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
596浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
557浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 08:38 , Processed in 0.992206 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号