使用的是JLINK V8,在SW模式来烧写程序,所以PB3、PB4、PA15作为GPIO使用,但问题是我无法用 HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4,GPIO_PIN_SET) HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4,GPIO_PIN_RESET)来进行控制,也就是电平无法拉高拉低, 初始化已经置为GPIO模式 GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_8 |GPIO_PIN_9; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); 请教有没有遇到这种问题,有没有解决的办法? |
PB4是NJTRST,需要先关闭这个功能。 |
用STM32CubeMX配置的,怎么关闭?也就是关闭JTAG功能,保留SW功能 |
没用过这个怎么配置,标准库是可以直接通过GPIO重映射修改。 |
加了一句,__HAL_AFIO_REMAP_SWJ_NOJTAG();可以PB3 PB4当IO使用了,不过烧写完程序后,第二次居然烧写不了程序,必须把boot0拉高才能再次写程序,可是我总不能来回把boot0拉高拉低地切换,太麻烦了! |
为什么非要这2个口呢?不能避开吗? |
不可避免,不是我的设计的硬件,是别人的 |
自己修改一下 |
跳线, |
__HAL_AFIO_REMAP_SWJ_NONJTRST();搞掂了 |