打印
[开发生态]

使用国民技术MCU实现GPIO控制的简单应用

[复制链接]
444|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Wordsworth|  楼主 | 2024-10-2 17:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近我在使用国民技术的MCU做一个简单的项目,主要是通过GPIO来控制LED的点亮和熄灭。这个MCU的配置和其他常见的MCU类似,不过我在实际操作中发现了一些有趣的小技巧,今天就分享一下我如何通过简单的代码来实现这个功能。

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

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

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

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

    // 启动GPIO时钟
    __HAL_RCC_GPIOA_CLK_ENABLE();

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

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

int main(void) {
    // 初始化MCU
    HAL_Init();
   
    // 配置GPIO
    GPIO_Config();
   
    while (1) {
        // 检测按钮状态
        if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET) {
            // 按钮按下,点亮LED
            HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
        } else {
            // 按钮松开,关闭LED
            HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
        }
    }
}


代码解释:
  • 首先,我通过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还不错,我用它做了个温度监控,感觉稳定性挺好的。

使用特权

评论回复
5
帛灿灿| | 2024-10-2 17:18 | 只看该作者
按钮控制LED这种小项目确实挺有趣的,特别是调试GPIO时很容易理解整个流程

使用特权

评论回复
6
万图| | 2024-10-2 17:18 | 只看该作者
代码看起来很干净,准备尝试一下。对这个MCU的支持库有点好奇,感觉上手还挺容易的。

使用特权

评论回复
7
Bblythe| | 2024-10-2 17:18 | 只看该作者
这种基础的GPIO控制确实是入门必备,适合练手,我一会也试试!

使用特权

评论回复
8
Pulitzer| | 2024-10-2 17:19 | 只看该作者
之前用STM32做过类似的项目,没想到国民技术的MCU代码结构也挺相似的

使用特权

评论回复
9
Uriah| | 2024-10-2 17:19 | 只看该作者
分享得很详细!我也打算用国民技术的MCU开发个小玩具,这篇文章太及时了。

使用特权

评论回复
10
Clyde011| | 2024-10-2 17:19 | 只看该作者
这个思路很不错!不过LED点亮后,长按按钮有没有延迟响应的问题?

使用特权

评论回复
11
suncat0504| | 2024-10-14 21:08 | 只看该作者
也可以拓展使用GPIO中断方式实现。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

3714

帖子

1

粉丝