STM32F107 IAP 注意的地方

最近尝试用STM32F107 做IAP 测试,通过USB Host的方式从U盘更新程序,这个在ST官方有现成的demo,而且还有文档,不多说,主要说说其中的一个小问题。


APP程序也是用到了USB host,设置方面都没问题,如下:

STM32F107 IAP 注意的地方_第1张图片STM32F107 IAP 注意的地方_第2张图片STM32F107 IAP 注意的地方_第3张图片



在main函数中设置中断向量偏移量:


STM32F107 IAP 注意的地方_第4张图片

生产.bin文件后进行下载,当时无法运行!

设置肯定是没问题的,生产的二进制文件也应该是没问题的,但为什么不对呢?于是我设想会不会是IAP程序和APP程序都使用了USB ,或者在某些中断或什么的冲突呢?结果找不到答案。。。。


无意之间在百度上看到一个关于中断地址设置重复的问题,也就是NVIC_SetVectorTable() 函数多处使用并且设置的偏移量不同,突然醒悟,于是我去查找我的程序中是否有这个问题,果然,找到了!

STM32F107 IAP 注意的地方_第5张图片


由于STM32F107 的USB需要使用TIM2 来作为定时器,所以在初始化定时器中断的时候重新定义了偏移量,罪过罪过~~~~~


结果虽然出来了,但是问题是很明显的,在IAP过程中,APP 和IAP程序都应是独立的,一般RAM是公用的,FLASH独立,当然,也有SRAM型的APP,反正自己的FLASH和RAM都应保持独立,不要与其他的重叠。

你可能感兴趣的:(STM32)