打印
[产品应用]

基于芯源CW32 MCU的LED闪烁示例及代码解析

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

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

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

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

    while (1) {
        GPIO_SetBits(GPIOA, GPIO_Pin_5);    // 打开LED
        delay_ms(1000);                     // 延时1秒
        GPIO_ResetBits(GPIOA, GPIO_Pin_5);  // 关闭LED
        delay_ms(1000);                     // 延时1秒
    }
}
代码解析:
  • 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闪烁果然是入门必备啊,刚好拿你的代码做实验了!

使用特权

评论回复
5
万图| | 2024-10-2 15:47 | 只看该作者
哇,CW32的库用起来真方便,比我之前用的芯片简单多了。

使用特权

评论回复
6
Wordsworth| | 2024-10-2 15:47 | 只看该作者
那个延时函数虽然简单,但应该有更精准的方式吧?不过先用着练手了!

使用特权

评论回复
7
Bblythe| | 2024-10-2 15:47 | 只看该作者
我也在用CW32,想问一下你用的开发板是哪款?

使用特权

评论回复
8
Pulitzer| | 2024-10-2 15:48 | 只看该作者
看起来挺直观的代码,GPIO控制的部分尤其清晰,赞!

使用特权

评论回复
9
Uriah| | 2024-10-2 15:48 | 只看该作者
以前一直用STM32,没想到CW32也挺好用,学到了!

使用特权

评论回复
10
Clyde011| | 2024-10-2 15:48 | 只看该作者
这个延时是简单循环的,可能会影响到主任务的执行,不过入门还可以。

使用特权

评论回复
11
星辰大海不退缩| | 2024-10-8 22:29 | 只看该作者
Keil作为开发环境,同时利用官方提供的CW32库函数,这使得代码更加简洁清晰

使用特权

评论回复
12
小小蚂蚁举千斤| | 2024-10-9 17:29 | 只看该作者
GPIO的使用和基本的延时控制非常实用的案例

使用特权

评论回复
13
szt1993| | 2024-10-12 10:26 | 只看该作者
Keil作为开发环境,同时利用官方提供的CW32库函数,代码更加简洁清晰

使用特权

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

本版积分规则

34

主题

3651

帖子

0

粉丝