关于systick在IAP之后无法正常使用问题!

2019-07-21 07:48发布

各位坛友好,最近在做 关于 tftp和http 通过网口升级程序的程序。现在已经可以烧写和读取烧写进去的 文件,并且升级了。
但是好景不长,遇到了个问题,反复查看基本确定是 BOOTLOADER里面 用了SYSTICK,然后在APP里面重新定义向量表之后
systick就算是重新赋值,也无法进入APP程序中的Systick_Handler(),然后导致APP里面的Ucos无法启动,并且无法初始化成功ETH。
HAL_Delay(ETH_REG_WRITE_DELAY); HAL库里面有一个ETH的DMA操作,然后就死在这里了,反复查看确实是 Bootloader里面用了SYSTICK
跳转到APP之后SYSTICK就没用了,也不是没用SysTick->VAL在更新并且SysTick的超时位也置位了,就是无法触发Systick_Handler()中断。

小弟也想了几个尝试的办法,在bootloader里面接收到要升级的文件,在要升级前把Systick关闭了,并且把HAL_Deint();还把INTX_DISABLE();了
都没有效果,最后想了个办法,就是接收到升级文件之后,写入flash之后软件复位了HAL_NVIC_SystemReset();,r然后就可以运行了。

但是心想不是个办法,肯定要找到,但是没有头绪,不知各位有没有遇到给个讲解!



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
szczyb1314
1楼-- · 2019-07-21 12:22
你的NVIC没有复位,原来的库文件2.x的版本是有个NVIC_DeInit()函数的,后来的版本没了,bootloader跳转之前复位NVIC.
Polychromatic
2楼-- · 2019-07-21 17:19
 精彩回答 2  元偷偷看……

一周热门 更多>