• 已解决 41321 个问题
  • 已帮助 5882 位优秀工程师

STM32 PB4(JNTRST)引脚用作普通IO口问题

SingleYork 2019-11-18 浏览量:2208

【前三名回答额外获得100IC币】

01.jpg


如上图所示,将STM32F103的PB4引脚作用普通IO功能输出口使用时,只要一输出低电平,单片机就会复位,当我屏蔽了“__HAL_AFIO_REMAP_SWJ_NOJTAG();”这句时,输出低电平则无效,应该可以证明这句“__HAL_AFIO_REMAP_SWJ_NOJTAG();”是设置成功的,但是,我让这个引脚输出低电平的时候,MCU就一直在复位,程序都不会往下执行了:


02.jpg


单片机 STM32
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 先看硬件上的复位引脚的连接与这个PB4有没有关联

    再看这个函数的内部低层吧,对一下寄存器配置,看看是不是HAL库的BUG,HAL库的BUG真是不少的。

    • 发布于 2019-11-20
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:5
  • 最大的可能是你的这个PB4脚连接在了芯片的复位管脚了,其他可能性比较小。有原理图对下图纸,没图纸用万用表量下PB4和复位脚是不是通的。
    • 发布于2019-11-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 对HAL库不熟悉,在执行NOJTAG命令前,需要打开端口复用时钟

    建议直接查看该函数功能所执行的寄存器命令是否正确

    • 发布于2019-11-18
    • 举报
    • 评论 0
    • 0
    • 0

  • gpiob的时钟没有打开,还有他的复用时钟也要打开,这样才能把复用功能改成普通io
    • 发布于2019-11-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 默认都是只开启SW的引脚功能,直接把IO初始化位普通引脚就可以了。不需要REMAP。

    或者就是CUBEMX软件里面,DEBUG选项直接配置成SERIAL Wire模式

    • 发布于2019-11-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以检查一下在执行这句程序的时候,芯片的复位脚上面是否有异常的电平
    • 发布于2019-11-30
    • 举报
    • 评论 0
    • 0
    • 0

STM32 PB4(JNTRST)引脚用作普通IO口问题