完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
环境: HAL库, F1系列1.40版 STM32F103VET6 使用双线的ST-Link BUG: 使用PB345作为SPI端口,连接一颗W25Q16 CubeMX生成代码,如果使用SPI1,则会造成Init SPI后,STlink无法下载代码(Keil 5里面报告找不到Target),此时SPI1是正常工作的可操作Flash。 如果使用SPI3则一切正常。后来跟踪发现,只要调用了_HAL_AFIO_REMAP_SPI1_ENABLE就会出问题。 以下是简化的main.c,启动5秒内,正常下载;5秒后,Stlink无法连上。 有同样环境的朋友希望可以试一试。 |
|
相关推荐
9个回答
|
|
本帖最后由 Tcreat 于 2017-1-13 10:35 编辑
对照数据手册引脚图 就知道了 PB3/PB4是编程复用口 特别是PB4 在SWD 和 JTAG编程模式下 都是要占用的 然而你使能映射的PB3和PB4 我想应该是关掉的JTAG和SWD仿真口导致的 以下来自 原子论坛帖内容: 设置为SW模式时,PB3管脚在跟踪时为TRACESWO信号,cpu软件复位也不会清除,需断电才能再次使用。所以需要关闭跟踪。 否则在进入调试后,PB3管脚不受ODR控制。 关于寄存器: 3个控制位用来配置SWJ-DP 接口的引脚,这3个位在系统复位时复位。 ● AFIO_MAPR(STM32F10xxx微控制器中的地址是0x40010004) ─ 读:APB,无等待状态 ─ 写:APB,如果AHB-APB桥的写缓冲器满了,则一个等待状态 位26:24=SWJ_CFG[2:0] 由软件置位和复位 这3位用来设置分配给SWJ调试接口的专用引脚数目,目的是在使用不同的调试接口时能释放 尽可能多的引脚用作普通I/O 口。 复位后的初始值是000( 所有引脚都设置为JTAG-DP接口专用引脚),同时只能置位3个位中的 一个(禁止同时设置一个以上的位)。 调试MCU配置寄存器DBGMCU_CR : 此寄存器允许在调试状态下下配置MCU。包括: ● 支持低功耗模式 ● 支持定时器和看门狗的计数器 ● 支持bxCAN通信 ● 分配跟踪引脚 DBGMCU_CR寄存器被映射到外部PPB 总线,基地址为0xE0042000 。 寄存器由PORESET 异步复位( 不被系统复位所复位) 。当内核处于复位状态下时,调试器可写该 寄存器。 如果调试器不支持这些特性,用户软件仍可写这些寄存器。 DBGMCU_CR 地址:0xE0042004 只支持32位访问 POR复位:0x0000 0000(不被系统复位所复位) 使用SW并且PB3可控的配置代码,注意时能AFIO。 RCC->APB2ENR |= 1 | (1<<3); /*AFIO/ GPIOB*/ DBGMCU->CR = DBGMCU->CR & ~((uint32_t)1<<5); AFIO->MAPR |= (AFIO->MAPR & ~((uint32_t)0x7 << 24)) | (2 << 24); //SW模式 |
|
|
|
60user135 发表于 2018-11-27 09:26 应该是SWD接口还能使用,还能继续仿真。。。PA13、PA14未使用就可以 |
|
|
|
本帖最后由 Tcreat 于 2017-1-13 10:32 编辑 看网上说 SWD模式 PB3默认是调试跟踪 需要关闭调试跟踪 才行 不然 PB3也是无法用的 不管怎么说 他这现象始终是与仿真口冲突造成的 并不是什么杂症 稍微百度下就知道了 |
|
|
|
二狗哥,这你要直接上代码啊,让有条件的同学直接下载测试下看是不是和你的情况一样。
|
|
|
|
无所上代码 就是编程口占用的问题 |
|
|
|
|
|
|
|
问题在于~~ 我用SPI3的时候,也是占用了PB3、4、5的,这个时候SPI3工作正常(能读写w25q) 而且,同时,Serial Wire模式下载正常(使用ST Link) 所以 并 不 是 占用编程口的问题。 |
|
|
|
本帖最后由 ss1969 于 2017-1-13 12:04 编辑 补充一下Serial wire模式应该是不使用PB4的。 出现这个问题之后,我用Jlink + 飞线的方式,可以下载,此时也不需要接PB4(nTRST),只需要多接上TDI,TDO和nSRST即可! |
|
|
|
我已经直接上了呀。 就在main里面加一句就能出bug了 但我不确定如果不上W25Q16,会不会也会出现这个问题。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1441 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1373 浏览 3 评论
3018 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1519 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1949 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 04:23 , Processed in 0.745035 second(s), Total 87, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号