GD32固件库学习(三)-GPIO口使用
1.嵌入式学习笔记-12.嵌入式开发|踩坑经验3.GD32固件库学习(一)-MDK Arm开发环境搭建4.嵌入式学习笔记|Jlink解锁单片机5.stm32学习(二)|ADC电压采集&DMA6.stm32学习|cubemx配置通用定时器7.RT-Thread学习(一)-基于keil移植GD328.GD32固件库学习(八)—F4xx系列定时器时钟配置9.GD32固件库学习(七)—定时器初始化进入死循环10.GD32固件库学习(六)-外部中断EXTI11.GD32固件库学习(五)-GPIO12.GD32固件库学习(四)-字符串发送
13.GD32固件库学习(三)-GPIO口使用
14.GD32固件库学习(二)—时钟配置15.RT-Thead学习(二)-GD32移植(基于RT-Thread Nano源码)16.STM32407断点检测&cubemx17.嵌入式开发-printf输出中文乱码的问题18.GD32F427移植-RT-Thread标准版1 背景
关于GPIO口的使用是各类教程的入门经典例子——流水灯QAQ,连夜买了一个简单的开发板学习(好贵我焯,时间够的画建议不如自己画一个),参考官方的例子和网上的教程编写程序;
2 关于GPIO
手册解释如下:
各片上设备用其来实现逻辑输入/输出功能。每个 GPIO 端口有相关的控制和配置寄存器以满足特定应用的需求。GPIO 引脚上的外部中断在中断/事件控制器(EXTI)中有相关的控制和配置寄存器。
GPIO 端口和其他的备用功能(AFs)共用引脚,在特定的封装下获得最大的灵活性。GPIO 引脚通过配置相关的寄存器可以用作备用功能引脚,备用功能输入/输出都可以。
这个备用功能以前没怎么注意,用HAL库习惯了,stm32标准库开发中也有相关知识,这里强烈建议结合野火或者正点原子的标准库例子进行学习,可以理解很多代码;
3 编程要点
要点如下:
(1)使能GPIO端口时钟;
(2)初始化GPIO,包括引脚设置和输出模式
(3)使用固件库提供的函数控制GPIO口输出高低电平
4 代码部分
int main(void)
{
/* configure systick */
systick_config();
/* enable the LEDs GPIO clock */
rcu_periph_clock_enable(RCU_GPIOC);
/* configure LED1 GPIO port */
gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_6);
gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_6);
/* reset LED1 GPIO pin */
gpio_bit_reset(GPIOC, GPIO_PIN_6);
while(1) {
/* turn on LED1 */
gpio_bit_set(GPIOC, GPIO_PIN_6);
delay_1ms(1000);
/* turn off LED1 */
gpio_bit_reset(GPIOC, GPIO_PIN_6);
delay_1ms(1000);
}
}
*一些建议
所有的官方示例代码都是直接在main函数里写,个人开发的时候可以采取gpio.c等形式。
作者:PhoenixTree
出处:https://www.cnblogs.com/PhoenixTree/p/16793143.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?