最近,我拿到了新定义(NewDefine)MCU的开发板,决定写一个简单的LED闪烁程序来测试一下这个MCU的基本功能。新定义MCU在性能和价格方面都有很好的平衡,适合各种小型嵌入式项目。我这次用的是它们的低功耗型号,下面分享下我的编程过程。
准备工作- 开发环境:我使用的是官方推荐的NewDefine IDE,这个IDE对新定义MCU的支持非常友好,内置了很多代码模板。
- 硬件:一块NewDefine MCU开发板和一个LED(连接在GPIO引脚上)。
- 编译器:使用的是NewDefine提供的GCC编译器,编译效率还不错。
代码实现这次的目标是通过GPIO控制LED实现简单的闪烁功能,下面是核心代码:
- #include "newdefine.h"
- // 定义LED连接的GPIO引脚
- #define LED_PIN GPIO_PIN_5
- #define LED_PORT GPIOA
- void delay_ms(uint32_t ms) {
- // 简单的延时函数
- volatile uint32_t count = ms * 1000;
- while(count--) {
- __NOP();
- }
- }
- int main(void) {
- // 初始化MCU系统
- SystemInit();
-
- // 启用GPIOA的时钟
- RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
- // 配置GPIOA PIN 5为输出模式
- LED_PORT->MODER |= (1 << (LED_PIN * 2));
- while (1) {
- // 点亮LED
- LED_PORT->ODR |= LED_PIN;
- delay_ms(500); // 延时500毫秒
- // 熄灭LED
- LED_PORT->ODR &= ~LED_PIN;
- delay_ms(500); // 延时500毫秒
- }
- }
代码讲解- 初始化系统:首先通过SystemInit()函数初始化MCU的时钟系统。
- GPIO配置:通过设置GPIOA的时钟使能和引脚模式,把PA5设置为输出模式,这里我们连接了LED。
- LED控制:使用简单的位操作对ODR寄存器进行设置,通过OR操作点亮LED,通过AND操作熄灭LED。
- 延时函数:为了控制LED闪烁的速度,我写了一个简易的延时函数,通过循环实现。
应用场景这个例子虽然简单,但在实际应用中,可以用于调试、状态指示灯等功能。随着项目复杂度的增加,LED控制可以结合定时器和中断等功能,实现更复杂的控制逻辑。
总结这次的NewDefine MCU体验非常不错,开发环境和硬件资源都比较丰富。简单的GPIO控制非常直观,适合刚入门的开发者。如果大家也想试试新定义的MCU,可以从这个简单的项目开始,逐步探索更多高级功能。
|