|
本帖最后由 rcwind_3027982 于 2018-4-22 19:59 编辑 我们现在开发的一个产品需要使用BootLoader功能做程序跳转用,产品代码使用的stm32cube mx配置的,芯片是stm32f407vet6,但是发现一些问题: 1.BootLoader使用usart2的dma发送功能打印日志用,如果程序在跳转前不__set_PRIMASK(1)关全局中断,APP里初始化usart2(使用dma发送接收功能)的时候会死掉,注释usart2的初始化就正常了,看起来像是死在了dma配置这里; 以下是BootLoader跳转代码: 以下是APP的初始化代码: jlink跟踪调试call stack: 2。基于第一个问题,跳转前__set_PRIMASK(1)关全局中断,在APP里__set_PRIMASK(0)开全局中断,APP跑不起来,也是死在了usart2初始化里,这个开全局中断位置有点讲究,放到usart2初始化后面可以跑起来。 3.使用BootLoader功能似乎会影响APP程序,APP配置起始地址为0x800C000,tim1的ch1和ch2映射到pa8,pa9,配置为正交编码器模式,无法计数,jlink跟踪tim1的cnt一直不变,但是配置成pwm输出是有pwm波形的。如果不使用BootLoader,APP起始地址设置为0x8000000,那tim1配置为正交编码器是可以计数的。 不知道啥原因? 以上,keil使用的版本如下: cubemx版本如下: 哪位大哥可以解答一下,困扰好久了!!! 附件是编译的bin文件,工程配置只有rom偏移地址和VECT_TAB_OFFSET配置不一致,其他的都是一样的。 |
bin文件.zip
下载324.9 KB, 下载次数: 7, 下载积分: ST金币 -1
微信公众号
手机版
评分
查看全部评分
评分
查看全部评分