[应用方案] 基于新定义MCU的LED闪烁应用:从零开始编写简单代码

[复制链接]
 楼主| 童雨竹 发表于 2024-10-2 15:38 | 显示全部楼层 |阅读模式
最近,我拿到了新定义(NewDefine)MCU的开发板,决定写一个简单的LED闪烁程序来测试一下这个MCU的基本功能。新定义MCU在性能和价格方面都有很好的平衡,适合各种小型嵌入式项目。我这次用的是它们的低功耗型号,下面分享下我的编程过程。

准备工作
  • 开发环境:我使用的是官方推荐的NewDefine IDE,这个IDE对新定义MCU的支持非常友好,内置了很多代码模板。
  • 硬件:一块NewDefine MCU开发板和一个LED(连接在GPIO引脚上)。
  • 编译器:使用的是NewDefine提供的GCC编译器,编译效率还不错。

代码实现这次的目标是通过GPIO控制LED实现简单的闪烁功能,下面是核心代码:

  1. #include "newdefine.h"

  2. // 定义LED连接的GPIO引脚
  3. #define LED_PIN GPIO_PIN_5
  4. #define LED_PORT GPIOA

  5. void delay_ms(uint32_t ms) {
  6.     // 简单的延时函数
  7.     volatile uint32_t count = ms * 1000;
  8.     while(count--) {
  9.         __NOP();
  10.     }
  11. }

  12. int main(void) {
  13.     // 初始化MCU系统
  14.     SystemInit();
  15.    
  16.     // 启用GPIOA的时钟
  17.     RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;

  18.     // 配置GPIOA PIN 5为输出模式
  19.     LED_PORT->MODER |= (1 << (LED_PIN * 2));

  20.     while (1) {
  21.         // 点亮LED
  22.         LED_PORT->ODR |= LED_PIN;
  23.         delay_ms(500); // 延时500毫秒

  24.         // 熄灭LED
  25.         LED_PORT->ODR &= ~LED_PIN;
  26.         delay_ms(500); // 延时500毫秒
  27.     }
  28. }

代码讲解
  • 初始化系统:首先通过SystemInit()函数初始化MCU的时钟系统。
  • GPIO配置:通过设置GPIOA的时钟使能和引脚模式,把PA5设置为输出模式,这里我们连接了LED。
  • LED控制:使用简单的位操作对ODR寄存器进行设置,通过OR操作点亮LED,通过AND操作熄灭LED。
  • 延时函数:为了控制LED闪烁的速度,我写了一个简易的延时函数,通过循环实现。

应用场景这个例子虽然简单,但在实际应用中,可以用于调试、状态指示灯等功能。随着项目复杂度的增加,LED控制可以结合定时器和中断等功能,实现更复杂的控制逻辑。

总结这次的NewDefine MCU体验非常不错,开发环境和硬件资源都比较丰富。简单的GPIO控制非常直观,适合刚入门的开发者。如果大家也想试试新定义的MCU,可以从这个简单的项目开始,逐步探索更多高级功能。

公羊子丹 发表于 2024-10-2 15:38 | 显示全部楼层
哇,这个教程很清晰,正好我也刚拿到新定义的开发板,回去试试!
帛灿灿 发表于 2024-10-2 15:39 | 显示全部楼层
感谢分享!这个延时函数好简单,我还在纠结该用什么方式写延时呢。
周半梅 发表于 2024-10-2 15:39 | 显示全部楼层
新定义的MCU性能怎么样?一直在犹豫要不要入手一块开发板。
万图 发表于 2024-10-2 15:39 | 显示全部楼层
代码看起来挺容易理解的,我这种新手感觉也能搞定哈哈!
Wordsworth 发表于 2024-10-2 15:40 | 显示全部楼层
LED闪烁是入门必经之路啊,每次写完都觉得好有成就感。
Pulitzer 发表于 2024-10-2 15:40 | 显示全部楼层
没想到新定义的MCU还挺好用的,有没有更复杂的例子可以参考?
Bblythe 发表于 2024-10-2 15:41 | 显示全部楼层
延时函数这么写靠谱吗?不会卡住系统吗?
Uriah 发表于 2024-10-2 15:41 | 显示全部楼层
谢谢分享,刚好要用新定义的MCU写个小项目,代码直接拿来用了。
Clyde011 发表于 2024-10-2 15:42 | 显示全部楼层
这个开发板的GPIO控制好像挺方便的,准备入手玩一下。
szt1993 发表于 2024-11-19 23:58 | 显示全部楼层
LED等入门必备
您需要登录后才可以回帖 登录 | 注册

本版积分规则

155

主题

5880

帖子

2

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