[STM32C0] C0入门GPIO操作

[复制链接]
48|11
shashaa 发表于 2026-6-7 21:44 | 显示全部楼层 |阅读模式
刚接触STM32C0,发现它和F0很像,但外设更精简。GPIO操作倒是简单,但有些细节还是值得注意。C0的GPIO没有模拟功能(AFIO),所以不能用重映射,所有外设都固定引脚。  

我做了一个LED闪烁的程序,用HAL库的话,HAL_GPIO_Init()会自动配置时钟,但如果是标准库或者LL库,需要手动使能GPIO时钟。C0的时钟树比较简单,只有一个SYSCLK,没有PLL,最高48MHz,所以外设频率都是48MHz分频来的。  

另外,C0的GPIO输出速度选项只有LOW、MEDIUM、HIGH,没有VERY_HIGH,因为C0定位是低成本,高频切换需求少。如果做PWM,频率高了可能波形不好看。  

中断配置方面,C0支持外部中断线,但同一个中断线不能共享多个引脚(不像F1可以),所以如果有多个按键,要用不同的EXTI线。我用了PA0、PB0、PC0,结果只有PA0能进中断,后来发现EXTI0只能对应一个端口,要选PA0就不能用PB0。  

还有一个小问题是,C0的复位后默认所有GPIO都是模拟输入,所以如果不初始化,直接读引脚状态会得到随机值。建议上电先配置需要的GPIO为输入或输出。  

现在做个简单的按键检测,用轮询方式,效果不错。希望C0能出一些低成本的评估板,现在NUCLEO板有点贵,适合学生党的便宜板子更好。  
boy1990 发表于 2026-6-7 21:51 | 显示全部楼层
原来EXTI0不能多引脚共用,我也在C0上卡过这个问题,学到了。
sourceInsight 发表于 2026-6-7 21:51 | 显示全部楼层
个人觉得C0的GPIO速度够用了,做开关控制完全没问题。
bbapple 发表于 2026-6-7 21:51 | 显示全部楼层
希望官方出点便宜开发板,NUCLEO对学生来说确实有点贵。
handleMessage 发表于 2026-6-7 21:52 | 显示全部楼层
也许C0默认模拟输入是为了防漏电,但新手容易忽略这一点。
zhouhuanの 发表于 2026-6-7 21:52 | 显示全部楼层
原来时钟树是单SYSCLK,这样配置反而简单,不容易出错。
wanglaojii 发表于 2026-6-7 21:52 | 显示全部楼层
或许引脚功能固定也挺好,不用费心考虑重映射的麻烦。
laozhongyi 发表于 2026-6-7 21:53 | 显示全部楼层
个人觉得C0做低复杂度控制很合适,成本能压下来
Edisons 发表于 2026-6-7 21:53 | 显示全部楼层
原来PA0/PB0不能同时用中断,看来得好好规划引脚分配了。
_gege 发表于 2026-6-7 21:53 | 显示全部楼层
也许用HAL库确实省事,初始化时钟这些都不用自己管了。
Mozarts 发表于 2026-6-7 21:54 | 显示全部楼层
希望社区能多些C0的教程,毕竟定位是入门款,资料太少了。
SophiaOP 发表于 2026-6-8 11:22 | 显示全部楼层
C0定位低成本,外设固定引脚也方便,适合初学者入门。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

164

主题

1594

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部
0