这个问题出现在STM32F103ZET6芯片上,采用SW方式,由于SPI3和JTAG引脚都占用PB3/PB4,多次试验发现仿真时SPI不正常,只有断电SPI才有数据输出,为了排除SPI的问题,关闭JTAG,只把PB3/PB4当GPIO来用,问题仍在,即PB4(JNTRST)正常,PB3(JTDO)仿真时不正常,断电复位正常,看了手册,这种效果是配置了:“所有的SWJ引脚 (JTAG-DP + SW-DP) 除了JNTRST引脚”这种模式后才出现的现象,但是我程序里开启了复用时钟,并且打开的是GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);怀疑库的问题,然后操作寄存器也就是配置AFIO_MAPR Bit26:24,程序如下:
//JTAG模式设置,用于设置JTAG的模式 AFIO_MAPR Bit26:24
//mode:jtag,swd模式设置
//000,全使能;
//001,完全SWJ(JTAG-DP + SW-DP)但没有NJTRST;
//010,关闭JTAG,启用SW
//100,全关闭;
void JTAG_SetRig(u8 mode)
{
u32 temp;
temp=mode;
temp<<=24;
RCC->APB2ENR|=1<<0; //开启辅助时钟
AFIO->MAPR&=0XF8FFFFFF; //清除MAPR的[26:24]
AFIO->MAPR|=temp; //设置jtag模式
}
排除硬件故障,多个板子都是一个问题,总结起来就是PB3(JTDO)的问题,即程序下载进去和仿真都不正常,只有断电之后正常,因为很多东西需要在线调试SPI,所以如果不能仿真那就很麻烦
|
哥们,对于sw-DP释放其他引脚为IO口的问题,麻烦你加下我微信:13259732180,谢谢