[产品应用] 基于芯源CW32 MCU的LED闪烁示例及代码解析

[复制链接]
 楼主| 周半梅 发表于 2024-10-2 15:45 | 显示全部楼层 |阅读模式
最近我在项目中使用了芯源的CW32 MCU,这是一款非常适合物联网和低功耗应用的微控制器。在初步学习和使用中,我做了一个简单的LED闪烁实验,通过这篇帖子给大家分享一下代码及相关的配置步骤。
硬件准备:
  • 芯源CW32开发板
  • 一个LED
  • 电阻及基础连接线
开发环境:我使用的是Keil作为开发环境,同时利用官方提供的CW32库函数,这使得代码更加简洁清晰。
代码实现:这段代码实现的是控制板载的LED按1秒的间隔闪烁。

  1. #include "cw32f030.h"   // 包含芯源CW32的硬件头文件
  2. #include "cw32f030_gpio.h"  // 包含GPIO控制的头文件

  3. // 延时函数
  4. void delay_ms(uint32_t ms) {
  5.     for(uint32_t i = 0; i < ms * 8000; i++);  // 简单的循环延时
  6. }

  7. // 主函数
  8. int main(void) {
  9.     // 初始化GPIO,选择要使用的管脚
  10.     GPIO_InitTypeDef GPIO_InitStructure;
  11.     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);  // 启动GPIO时钟
  12.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;            // LED连接到GPIO A5引脚
  13.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;        // 设置为输出模式
  14.     GPIO_Init(GPIOA, &GPIO_InitStructure);

  15.     while (1) {
  16.         GPIO_SetBits(GPIOA, GPIO_Pin_5);    // 打开LED
  17.         delay_ms(1000);                     // 延时1秒
  18.         GPIO_ResetBits(GPIOA, GPIO_Pin_5);  // 关闭LED
  19.         delay_ms(1000);                     // 延时1秒
  20.     }
  21. }
代码解析:
  • GPIO初始化:我们首先通过RCC_AHBPeriphClockCmd()函数启动GPIOA的时钟。随后,通过GPIO_Init()设置引脚为输出模式,LED接在GPIOA的Pin 5上。
  • 延时函数:这里我们使用了一个简单的循环延时函数delay_ms(),虽然在实际项目中不推荐使用这种方式来进行精确计时,但是在简单的调试和测试中很实用。
  • LED控制:通过GPIO_SetBits()和GPIO_ResetBits()函数分别控制LED的点亮和熄灭,配合延时实现1秒钟闪烁一次。
总结:这个小实验展示了芯源CW32 MCU的一些基本操作,尤其是GPIO的使用和基本的延时控制。CW32 MCU整体使用体验不错,文档和库函数都比较完善。如果大家对这款MCU感兴趣,推荐在简单的实验中多多尝试!
如果你有其他关于CW32的应用场景,欢迎交流讨论!

公羊子丹 发表于 2024-10-2 15:46 | 显示全部楼层
这个代码挺好懂的,正好我也在学CW32,马上试一下!
帛灿灿 发表于 2024-10-2 15:46 | 显示全部楼层
感谢分享,终于搞清楚GPIO是怎么初始化的了!
童雨竹 发表于 2024-10-2 15:46 | 显示全部楼层
LED闪烁果然是入门必备啊,刚好拿你的代码做实验了!
万图 发表于 2024-10-2 15:47 | 显示全部楼层
哇,CW32的库用起来真方便,比我之前用的芯片简单多了。
Wordsworth 发表于 2024-10-2 15:47 | 显示全部楼层
那个延时函数虽然简单,但应该有更精准的方式吧?不过先用着练手了!
Bblythe 发表于 2024-10-2 15:47 | 显示全部楼层
我也在用CW32,想问一下你用的开发板是哪款?
Pulitzer 发表于 2024-10-2 15:48 | 显示全部楼层
看起来挺直观的代码,GPIO控制的部分尤其清晰,赞!
Uriah 发表于 2024-10-2 15:48 | 显示全部楼层
以前一直用STM32,没想到CW32也挺好用,学到了!
Clyde011 发表于 2024-10-2 15:48 | 显示全部楼层
这个延时是简单循环的,可能会影响到主任务的执行,不过入门还可以。
星辰大海不退缩 发表于 2024-10-8 22:29 | 显示全部楼层
Keil作为开发环境,同时利用官方提供的CW32库函数,这使得代码更加简洁清晰
小小蚂蚁举千斤 发表于 2024-10-9 17:29 | 显示全部楼层
GPIO的使用和基本的延时控制非常实用的案例
szt1993 发表于 2024-10-12 10:26 | 显示全部楼层
Keil作为开发环境,同时利用官方提供的CW32库函数,代码更加简洁清晰
您需要登录后才可以回帖 登录 | 注册

本版积分规则

149

主题

5792

帖子

1

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