
uboot初始化IIC1,跳转到应用程序中后,先读一字节AT24C04的数据,然后初始化IIC1(未复位),再读一字节AT24C04时,有概率一直检测到IIC处于busy状态。
STM32F407的flash读写问题
keil调试阶段无法进行仿真,能进到仿真界面,但是无法执行程序,这个怎么解决?
STM32F4的IO口5V容忍问题
询问STM32F407两种USB可以实现的功能
TOF传感器(VL53L5),无法得到data ready
在CUBEMX生成的STM32F407VET6的I2S主机接收模式与I2S主机发送模式能正常运行,如何进行动态调整或者如何实现主机全双工?
STM32F407 多机RS485串口通讯+地址位唤醒+DMA空闲线接收,无法进入中断服务程序。
设置RDP等级为2的同时,有什么办法可以确保后续还能够烧录程序
STM32F407VET6 I2S 采用DMA传输问题
编译APP时注意设置该地址,否则编译后的地址没有偏移是无法正确运行的。
这一点可以参考官方的例程。
地址没有问题,只要隐去usb外设的初始化,就可以正常跳转到app。没什么太好的办法,现在的做法是bootloader更新完app以后,软复位,再次执行一遍bootloader,读取到更新标志位不需要更新,就不执行后面的代码,直接跳转到app,这样是可以的。不过没搞清楚为何bootloader里初始化usb外设以后,在跳转app失败这个问题,以后遇到怕是要出大问题
这个问题挺严重的,不知道其他人有没有遇到过。我在bootloader里隐去对usb外设的初始化就可以正常跳转到app。没什么太好的办法,现在的做法是bootloader更新完app以后,软复位,再次执行一遍bootloader,读取到更新标志位不需要更新,就不执行后面的代码,直接跳转到app,这样是可以的。不过没搞清楚为何bootloader里初始化usb外设以后,在跳转app失败这个问题,以后遇到怕是要出大问题
网上有人在跳转到app以前调用了这2个函数
__HAL_RCC_PWR_CLK_DISABLE(); HAL_RCC_DeInit();,进去看了下里面的内容,貌似就是把时钟又配置了一遍。试了下,有了这2句话,就可以正常跳转到app了,搞不懂。希望有猛男来指点下,这个有点狠,把整个工程的时钟都在配置了一遍,如果有其他外设在运行不知道会不会有影响,如果有单独的针对usb外设的操作,不影响其他外设,就完美了
跳转前让BOOT区开启过的外设中断使能都禁用掉,包括systick的。
也不要霸王硬上弓似地简单做总中断的关闭。保证开始跳转后BOOT区不会
产生任何有效中断请求。
至于你提到的关闭外设时钟并非必须的。对于开启过的外设中断,我们往往
可以对相应外设进行复位操作令其中断使能位清零,尤其当我们针对某个外设开启的
中断较多时,这也是比较快捷而有效的方式。
比方我们对USB外设做下复位。写法可能跟芯片系列有关系,望具体调整参考使用。
__HAL_RCC_USB_FORCE_RESET() ;
__HAL_RCC_USB_RELEASE_RESET() ;
至于你提到的其它方式,有些方式的确有点猛,呵呵!当然能达到目的也行。
不过,当我们搞清根本原因后,在组织代码时就可以灵活处理。
不是这个问题,中断在跳转前我都会屏蔽的。以后还是慎用usb外设,这次还能用其他办法绕过,下次就不好说了