各位坛友好,最近在做 关于 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然后就可以运行了。
但是心想不是个办法,肯定要找到,但是没有头绪,不知各位有没有遇到给个讲解!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>