APM32F003 GPIO使用注意事项
<h2>一、GPIO主要特点</h2><p>主要特征 :</p>
<p>1、输入模式</p>
<p>⚫ 模拟输入</p>
<p>⚫ 浮空输入</p>
<p>⚫ 上拉输入</p>
<p>2、 输出模式</p>
<p>⚫ 推挽输出</p>
<p>⚫ 开漏输出</p>
<p>⚫ 可配置最大输出速率</p>
<p>3、复用功能</p>
<p>4、GPIO 都可以作为外部中断/唤醒线</p>
<h2>二、GPIO构造区别对比</h2>
<p>F003 GPIO内部构造图</p>
<p><img src="data/attachment/forum/202508/17/134127hixsi749t20xi4ei.png" alt="1.png" title="1.png" />F030 GPIO内部构造图</p>
<p><img src="data/attachment/forum/202508/17/134835qss5ss52f5k2k7ci.png" alt="2.png" title="2.png" /></p>
<p>1、从两张图片可以清晰的,F003缺少下拉电路,因此无法下拉输入,从端口控制寄存器也可以看到,输入模式只能选择浮空输入和上拉输入。</p>
<p><img src="data/attachment/forum/202508/17/140803zsyts938nyketjvx.png" alt="3.png" title="3.png" /></p>
<p>2、输出功能到输出控制,F003缺少选择器,因此在将GPIO配置为其他外设时,没有复用选择设置寄存器。<strong>外设模块的输出会直接到端口输出寄存器上,可理解为外设的优先级更高</strong>。</p>
<p><img src="data/attachment/forum/202508/17/144059b7kpjh3h37h37jt3.png" alt="6.png" title="6.png" /></p>
<p><img src="data/attachment/forum/202508/17/141914plt0f2fafha5f58t.png" alt="4.png" title="4.png" /></p>
<p>3、速度配置:通过配置 GPIOx_CTRL2 寄存器选择输出速度最大为 2MHz 或 10MHz。因此如果要使用模拟串口或者其他通讯协议时,需要注意IO翻转速度会限制模式通讯频率。</p>
<h2>三、特殊GPIO使用注意事项</h2>
<p>从数据手册中我们可以看到<strong>PB4、PB5是纯开漏输出</strong>,因此在需要对外输出高电平时,需要外部加上拉电阻,同样在配置为串口和IIC功能时也需要加外部上拉电阻。</p>
<p><img src="data/attachment/forum/202508/17/142218gybpbq8zllyyb1bs.png" alt="5.png" title="5.png" /></p>
<p>复位之后,除了调试接口 PD1 和 PD2,所有的引脚都是浮空输入模式。复位后,调试引脚 PD1 和 PD2 被置为复用功能,其中 PD1 为上拉模式。当关闭调试功能后,作为普通的 GPIO 引脚。建议如果要将PD1和PD2设置为其他功能时,建议不要在上电初始化时就更改掉,防止后续无法再下载程序。</p>
<h2>四、总结</h2>
<p>F003做为32位入门级别M0,在使用方式上偏向于8位MCU,精简了很多功能寄存器。同时有部分需要特殊注意的IO端口PB4、PB5、PD1和PD2,在使用的时候要注意。</p>
印象中,ARM的IP是无法自定义寄存器的。 调试口还是不要使用的为好。 银河漫步 发表于 2025-8-22 15:42
印象中,ARM的IP是无法自定义寄存器的。
ARM卖的是内核,外设是厂商自己选择IP 永恒的一瞥 发表于 2025-8-25 14:47
调试口还是不要使用的为好。
是的,针对有些应用IO不够的情况,这个也是一种方式,只是使用需要注意下 入门级32位M0内核MCU 输出速度配置 2MHz/10MHz两档 单个引脚最大输出电流建议不超过 8mA,总 I/O 电流不超过 50mA。 引脚正确接地或接电源,避免悬空导致功耗增加或不稳定。 PD1/PD2是否被误配置为普通IO 输出高电平时需外部上拉电阻,否则无法驱动外部电路 输入模式 + 上拉/下拉 GPIO引脚可能会影响微控制器 需要内部上拉或下拉电阻。 这个软件配置应该不会产生出来啥情况。
但GPIO过流和过压的风险是非常大的。 PB4/PB5必须确保低电平状态,可通过软件驱动输出低电平或外部硬件下拉 需要注意GPIO直接驱动大功耗器件可能会影响ADC采样结果 如果要将GPIO设置为输出模式,需要使用相应的库函数进行配置。 仅支持浮空输入和上拉输入,无下拉输入电路,需通过端口控制寄存器直接配置 避免超过引脚的电气极限导致损坏。
页:
[1]