stm--调试端口 和 普通 IO口

在使用STM32和DS18B20进行I2C通信时,遇到调试端口冲突问题,通过加入GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE)解决了引脚冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天 用stm写了一下 ds18b20 和 硬件I2C 但是怎么也 调不出来 最后 和历程进行 对比 最后 找到了 一个 差别  在历程里 多了 一条GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);的语句 , 原来 在stm32中有些引脚默认是作为调试端口的当用到以上那些 引脚是 就需要 讲将调试功能失能掉~  例如 ds18b20 需要用到 PA15 这个脚 那么你就需要调用哪个函数了
STM32微控制器中,默认配置下某些引脚可能是用于调试功能的,比如SWD(单线调试)或JTAG接。如果你希望将这些原本作为调试用途的引脚重新设置为普通GPIO输入输出(IO端口来使用,你需要按照以下步骤操作: ### 禁用调试模式 首先,在启动代码里通过修改相关寄存器值可以关闭掉复位后的默认开启状态下的Debug模式。 对于大多数基于ARM Cortex-M系列内核MCU来说,可以通过清除`DBGMCU_CR`寄存器里的相应位完成这一任务;具体到STM32F4等型号,则需要确保` DBGMCU_CR ` 寄存器中的特定位置零以禁用对应的调试通道(例如,清零`TRACEDIV`, `TRACE_IOEN` 其他涉及硬件追踪及调试的功能开关)。请注意不同版本间寄存器名称可能会有细微差异,请参考具体的芯片数据手册确认准确的信息。 ```c // 假设针对 STM32F4xx 家族 __HAL_RCC_DBGMCU_CONFIG(DBGMCU_DISABLE_TRACE); ``` ### 配置IO端口 接下来就是正常的初始化过程了 - 将目标引脚设定为你所需要的I/O工作模式 (推挽、开漏、模拟等等) ,这通常是在初始化函数中完成的,并且涉及到对 GPIOx_MODER 寄存器的操作,其中 x 表示你要控制的具体外设编号 A,B,C... 下面是一个简单的例子展示如何在一个典型的 HAL 库项目框架下调用API改变PA15(假设它是连接到了一个调试信号上): ```c void Configure_PA15_as_GPIO(void){ __HAL_RCC_GPIOA_CLK_ENABLE(); // 启动GPIOA时钟 /* 初始化结构体 */ GPIO_InitTypeDef GPIO_InitStruct = {0}; /* 设置 PA15 的属性 */ GPIO_InitStruct.Pin = GPIO_PIN_15; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽输出 GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); } ``` 这里我们选择了将它设为了通用推挽输出形式,当然你可以根据实际需求调整Mode其他参数。 ### 更新固件前注意事项 当更改完后打算烧录新程序之前一定要检查是否已经正确设置了BOOT引脚使得设备能够进入用户闪存区运行而非再次陷入系统引导加载程序等待新的下载指令。 以上就是在STM32平台上把原属于调试用途的管脚转换成常规数字I/O的基本流程简介啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值