news 2026/4/15 19:44:38

[STM32C0] 【STM32C092RC 测评】GPIO操作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[STM32C0] 【STM32C092RC 测评】GPIO操作

STM32C092RC 的 GPIO 配置虽然比 51 单片机复杂点,但官方库函数HAL/LL 库已经封装好了,照着例程改引脚号和参数就能用。

开时钟(让 GPIO 模块通电)

设置模式(输入/输出/上拉/下拉)

读写引脚(直接赋值 1 或 0)

虽然寄存器操作对新手不友好,建议直接用库函数,别硬啃手册,其实说白了就是那几个步骤。

STM32C092RC 有 32 个 GPIO 引脚具体型号可能不同,大部分支持复用功能UART、I2C、PWM 等一些外设。

GPIO 速度和驱动能力支持 2MHz/10MHz/50MHz 三种输出速度,实际是驱动能力调节,不是通信速率。

这里就不多讲了,现在开始对C092进行认真的了解与熟悉。

GPIO主要特性

输出状态:推挽或开漏+上拉/下拉

从输出数据寄存器(GPIOXODR)或外设(复用功能输出)输出数据

可为每个//0选择不同的速度输入

状态:浮空、上拉/下拉、I/0模拟模式

将数据输入到输入数据寄存器(GPIOxIDR)或外设(复用功能输入)

置位和复位寄存器(GPIOxBSRR),对GPIOxODR具有按位写权限

锁定机制(GPIOx LCKR),可冻结//0 端口配置模拟功能复用功能选择寄存器(一个 10 最多可具有 16 个复用功能)快速翻转,每次翻转最快只需要两个时钟周期引脚复用非常灵活,允许将/0 引脚用作 GPI0 或多种外设功能中的一种GPI0 功能描述根据数据手册中列出的每个 !/0端口的特性,可通过软件将通用 I/O(GPIO) 端口的各个端口位分别配置为多种模式:输入浮空输入上拉输入下拉模拟具有上拉或下拉功能的开漏输出具有上拉或下拉功能的推挽输出具有上拉或下拉功能的复用功能推换具有上拉或下拉功能的复用功能开漏

框图

下面看一下框图:

输出配置:

功能配置:

通用 I/0 (GPIO)

在复位期间及复位刚刚完成后,复用功能尚未激活,大多数 I0 端口被配置为模拟模式。复位后,调试引脚处于复用功能上拉/下拉状态:

PA14:SWCLK 处于下拉状态

PA13:SWDIO 处于上拉状态

PA14 与BOOT0 功能共用。使用时需小心谨慎,因为调试器件可能会篡改BOOTO 引脚值。当引脚配置为输出后,写入到输出数据寄存器(GPIOx ODR) 的值将在 I/0 引脚上输出。可以在推挽模式下或开漏模式(仅驱动低电平,高电平为高阻态)下使用输出驱动器。输入数据寄存器(GPIOx IDR) 每隔1个 AHB 时钟周期捕获一次 I/O 引脚的数据。所有 GPIO 引脚都具有内部弱上拉及下拉电阻,可根据 GPIOx PUPDR 寄存器中的值来打开/关闭。

GPIO 引脚支持以下工作模式:

GPIO:输出、输入或模拟 I/0,具体取决于 GPIOx MODER 寄存器设置复用功能

具有调试复用功能的 GPIO 在复位后设为复用功能模式。

附加功能

仅限部分 GPIO 引脚,附加功能模式通过相应功能模块(例如 ADC、DAC、RTC、RCC 和 PWR)的控制寄存器来设置,与 GPIOx MODER 寄存器设置无关。当某个 I/0 设为附加功能模式时,建议在 GPIOx MODER 寄存器中将其相应的 GPIO复用器设为模拟模式。

寄存器

GPIO 端口模式寄存器(GPIOX MODER)(x=A、B、C、D 和 F)

GPlO port mode register

偏移地址:0x00

复位值:0xEBFF FFFF(端口A)

复位值:0XFFFF FFFF(端口A以外的端口)

位 31:0 MODEy[1:0]: |/0y的端口x配置(Port x configuration for l/0 y)(y= 15 到 0)这些位通过软件写入,用于将 1/0 设为四种工作模式之一。00:输入

01:输出

10:复用功能

11:模拟

GPI0 端口输出类型寄存器(GPIOXOTYPER)(x=A、B、C、D和F)

GPlO port output type register

偏移地址:0x04

复位值:0x0000 0000

GPI0 端口输出速度寄存器(GPIOXOSPEEDR)(x=A、B、C、D和F)

GPlO port output speed register

偏移地址:0x08

复位值:0xOC00 0000(端口A)

复位值:0x0000 0000(端口A以外的端口)

这里就把几个基本的例出来。

代码

复制

  1. LED1_GPIO_CLK_ENABLE();
  2. LED2_GPIO_CLK_ENABLE();
  3. /* -2- Configure IO in output push-pull mode to drive external LEDs */
  4. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  5. GPIO_InitStruct.Pull = GPIO_NOPULL;
  6. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  7. GPIO_InitStruct.Pin = LED1_PIN;
  8. HAL_GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStruct);
  9. GPIO_InitStruct.Pin = LED2_PIN;
  10. HAL_GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStruct);
  11. /* USER CODE END 2 */
  12. /* Infinite loop */
  13. /* USER CODE BEGIN WHILE */
  14. while (1)
  15. {
  16. /* USER CODE END WHILE */
  17. /* USER CODE BEGIN 3 */
  18. HAL_GPIO_TogglePin(LED1_GPIO_PORT, LED1_PIN);
  19. /* Insert delay 100 ms */
  20. HAL_Delay(100);
  21. HAL_GPIO_TogglePin(LED2_GPIO_PORT, LED2_PIN);
  22. /* Insert delay 100 ms */
  23. HAL_Delay(100);

效果



版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 12:11:07

2025最新!专科生必看!8款AI论文软件测评,写毕业论文不再愁

2025最新!专科生必看!8款AI论文软件测评,写毕业论文不再愁 2025年专科生论文写作工具测评:从功能到体验的深度解析 随着人工智能技术的不断进步,AI论文软件已成为众多专科生撰写毕业论文的重要辅助工具。然而&#xff…

作者头像 李华
网站建设 2026/4/13 5:04:54

不用切换软件!一站式创意设计画布 AI 工具,跨模态设计无缝衔接

你知道吗?一个内容自媒体人,工作中的大部分时间都用在了从创意到成品的跨工具跳转上。前不久我还花了两个小时,使用了三个不同的设计工具,只为了完成一个简单的产品推广海报——从创意图稿到最后的封面设计,一直在切换…

作者头像 李华
网站建设 2026/4/15 13:16:00

具身智能@2025:「人机共生」前夜

【潮汐商业评论/文】“最开始我从厂家拿到它时,看上去就跟一般的硬件没啥区别,就是大了点,网上说它能代替我完成一些强度大和危险的工作,有点不信。它四肢折叠,皮肤呢还是比较光滑,摸着也是冰凉。不过让我比…

作者头像 李华
网站建设 2026/4/12 17:59:35

「域乳珍品」荣膺丝路沿线国家国宾伴手礼:以中国乳香,敬世界一堂

千年丝路,驼铃悠扬,见证着东西方文明的交融与互鉴。今日,这条承载友谊与梦想的古老通道,将迎来一缕崭新的、源自中国黄金奶源带的醇香。国内特种乳集成专卖品牌 「域乳珍品」 正式宣布,其核心产品系列经严格遴选,荣耀入选“丝路沿线国家国宾礼赠用品”。这不仅是一份属于品牌的…

作者头像 李华
网站建设 2026/4/13 21:15:41

风储调频与VSG虚拟同步机在四机两区系统中的奇妙之旅

Matlab/simulink 风储调频VSG虚拟同步机,风电VSG虚拟同步机调频,一次调频,四机两区系统,采用频域模型法使得风电渗透率25%,附加VSG虚拟同步控制,储能附加下垂控制,参与系统一次调频&#xff0c…

作者头像 李华
网站建设 2026/4/12 19:55:20

2025 CSDN年度报告:十年技术深耕,在代码与创作中奔赴山海

网罗开发(小红书、快手、视频号同名)大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方…

作者头像 李华