[开发生态] 使用国民技术MCU实现GPIO控制的简单应用

[复制链接]
 楼主| Wordsworth 发表于 2024-10-2 17:16 | 显示全部楼层 |阅读模式
最近我在使用国民技术的MCU做一个简单的项目,主要是通过GPIO来控制LED的点亮和熄灭。这个MCU的配置和其他常见的MCU类似,不过我在实际操作中发现了一些有趣的小技巧,今天就分享一下我如何通过简单的代码来实现这个功能。

项目简介:
在这个项目中,我会用国民技术的MCU来控制板载LED。当按下按钮时,LED会亮起;松开按钮,LED熄灭。这个项目主要用到了GPIO的输入输出功能。以下是代码的简要说明和实现。

硬件连接:
  • LED:连接到GPIO输出引脚
  • 按钮:连接到GPIO输入引脚

代码实现:
  1. #include "nt_mcu.h"  // 假设头文件名

  2. void GPIO_Config(void) {
  3.     // 配置LED引脚为输出
  4.     GPIO_InitTypeDef GPIO_InitStruct = {0};

  5.     // 启动GPIO时钟
  6.     __HAL_RCC_GPIOA_CLK_ENABLE();

  7.     // 配置LED引脚(假设为PA5)
  8.     GPIO_InitStruct.Pin = GPIO_PIN_5;
  9.     GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽输出
  10.     GPIO_InitStruct.Pull = GPIO_NOPULL;
  11.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  12.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  13.     // 配置按钮引脚为输入(假设为PA0)
  14.     GPIO_InitStruct.Pin = GPIO_PIN_0;
  15.     GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  16.     GPIO_InitStruct.Pull = GPIO_PULLUP; // 使用上拉电阻
  17.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  18. }

  19. int main(void) {
  20.     // 初始化MCU
  21.     HAL_Init();
  22.    
  23.     // 配置GPIO
  24.     GPIO_Config();
  25.    
  26.     while (1) {
  27.         // 检测按钮状态
  28.         if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET) {
  29.             // 按钮按下,点亮LED
  30.             HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
  31.         } else {
  32.             // 按钮松开,关闭LED
  33.             HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
  34.         }
  35.     }
  36. }


代码解释:
  • 首先,我通过HAL_Init()来初始化MCU,这个函数会配置基础时钟和系统中断。
  • 接着在GPIO_Config()函数中,我配置了GPIO引脚的模式:
    • LED引脚设置为推挽输出,用来控制LED的亮灭。
    • 按钮引脚设置为输入,并使用了上拉电阻来确保引脚在未按下时保持高电平。
  • 在while循环中,我通过HAL_GPIO_ReadPin()函数来检测按钮的状态。如果按钮被按下,则点亮LED,否则关闭LED。
总结:这个小项目展示了如何用国民技术MCU来实现简单的GPIO控制。虽然是基础的功能,但在开发中非常常用。希望这个例子对初学者有所帮助!如果你有任何问题,欢迎留言讨论。


公羊子丹 发表于 2024-10-2 17:17 | 显示全部楼层
哈哈,这代码很清晰!我之前也用过国民技术的MCU,GPIO控制真的蛮好上手的
童雨竹 发表于 2024-10-2 17:17 | 显示全部楼层
谢谢分享!我正好也想做个类似的项目,你这代码刚好能参考。
周半梅 发表于 2024-10-2 17:18 | 显示全部楼层
国民技术的MCU还不错,我用它做了个温度监控,感觉稳定性挺好的。
帛灿灿 发表于 2024-10-2 17:18 | 显示全部楼层
按钮控制LED这种小项目确实挺有趣的,特别是调试GPIO时很容易理解整个流程
万图 发表于 2024-10-2 17:18 | 显示全部楼层
代码看起来很干净,准备尝试一下。对这个MCU的支持库有点好奇,感觉上手还挺容易的。
Bblythe 发表于 2024-10-2 17:18 | 显示全部楼层
这种基础的GPIO控制确实是入门必备,适合练手,我一会也试试!
Pulitzer 发表于 2024-10-2 17:19 | 显示全部楼层
之前用STM32做过类似的项目,没想到国民技术的MCU代码结构也挺相似的
Uriah 发表于 2024-10-2 17:19 | 显示全部楼层
分享得很详细!我也打算用国民技术的MCU开发个小玩具,这篇文章太及时了。
Clyde011 发表于 2024-10-2 17:19 | 显示全部楼层
这个思路很不错!不过LED点亮后,长按按钮有没有延迟响应的问题?
suncat0504 发表于 2024-10-14 21:08 | 显示全部楼层
也可以拓展使用GPIO中断方式实现。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

144

主题

5773

帖子

1

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

144

主题

5773

帖子

1

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