OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2462|回复: 2

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

[复制链接]

9

主题

90

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
446
金钱
446
注册时间
2017-2-14
在线时间
90 小时
发表于 2018-11-17 16:19:05 | 显示全部楼层 |阅读模式
10金钱
各位坛友好,最近在做 关于 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#楼]

你的NVIC没有复位,原来的库文件2.x的版本是有个NVIC_DeInit()函数的,后来的版本没了,bootloader跳转之前复位NVIC.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2018-11-17 16:19:06 | 显示全部楼层
你的NVIC没有复位,原来的库文件2.x的版本是有个NVIC_DeInit()函数的,后来的版本没了,bootloader跳转之前复位NVIC.
回复

使用道具 举报

9

主题

90

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
446
金钱
446
注册时间
2017-2-14
在线时间
90 小时
 楼主| 发表于 2018-11-17 20:45:28 | 显示全部楼层
szczyb1314 发表于 2018-11-17 18:28
你的NVIC没有复位,原来的库文件2.x的版本是有个NVIC_DeInit()函数的,后来的版本没了,bootloader跳转之 ...

谢谢您,应该是这个问题,现在用M4,然后又用的HAL所以没有这条语句,好像官方也没这条语句了,我在看看m4编程指南,实在不行就只能复位一次在升级了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 00:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表