打印
[产品应用]

使用CW32 MCU实现UART串口通信与GPIO控制

[复制链接]
31|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Uriah|  楼主 | 2024-10-5 08:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

最近在项目中使用CW32 MCU,完成了一个简单的UART串口通信和GPIO控制的功能。CW32 MCU的资源相对丰富,特别适合一些低成本、低功耗的嵌入式应用。这里分享一下UART通信与GPIO的基础代码,供大家参考。

首先,我配置了UART串口,用于与PC端进行通信,实现数据的收发。同时,GPIO口用于控制LED的开关状态,接收串口数据后,点亮或熄灭LED。代码如下:

#include "cw32f030.h"

void UART_Init(void) {
    // 配置UART,波特率9600
    UART_Config_t uartConfig;
    uartConfig.baudRate = 9600;
    uartConfig.wordLength = UART_WordLength_8b;
    uartConfig.stopBits = UART_StopBits_1;
    uartConfig.parity = UART_Parity_No;
    UART_Init(UART1, &uartConfig);
    UART_Cmd(UART1, ENABLE);
}

void GPIO_Init(void) {
    // 初始化GPIO,用于控制LED
    GPIO_InitTypeDef gpioConfig;
    gpioConfig.Pin = GPIO_Pin_1;
    gpioConfig.Mode = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOB, &gpioConfig);
}

void UART1_IRQHandler(void) {
    // 接收数据并控制LED
    if (UART_GetITStatus(UART1, UART_IT_RXNE)) {
        char receivedChar = UART_ReceiveData(UART1);
        if (receivedChar == '1') {
            GPIO_SetBits(GPIOB, GPIO_Pin_1);  // 点亮LED
        } else if (receivedChar == '0') {
            GPIO_ResetBits(GPIOB, GPIO_Pin_1);  // 熄灭LED
        }
    }
}

int main(void) {
    // 初始化UART和GPIO
    UART_Init();
    GPIO_Init();
   
    while (1) {
        // 主循环等待中断
    }
}

代码解释:
  • UART_Init():配置了UART1的串口参数,波特率设置为9600,8位数据位,无校验位,1个停止位。
  • GPIO_Init():初始化GPIO,用于控制LED的状态。GPIO_Pin_1作为输出引脚。
  • UART1_IRQHandler():串口中断处理函数。当串口接收到数据后,通过中断判断数据内容,并根据接收到的字符控制GPIO,点亮或熄灭LED。

这个简单的例子展示了如何通过CW32 MCU的UART串口接收数据并控制GPIO,实际项目中可以根据需要进行更复杂的扩展。

使用特权

评论回复
沙发
公羊子丹| | 2024-10-5 08:38 | 只看该作者
这个代码简洁明了啊,正好我最近也在搞CW32,赶紧试试!

使用特权

评论回复
板凳
周半梅| | 2024-10-5 08:38 | 只看该作者
哇,没想到用CW32实现UART这么方便,代码量也不多!

使用特权

评论回复
地板
帛灿灿| | 2024-10-5 08:38 | 只看该作者
刚好我手头有个CW32的开发板,这个例子太及时了,感谢分享!

使用特权

评论回复
5
童雨竹| | 2024-10-5 08:39 | 只看该作者
请教一下,UART中断处理函数这块能不能再详细讲讲?

使用特权

评论回复
6
Wordsworth| | 2024-10-5 08:39 | 只看该作者
有意思!串口控制LED这个小项目很适合新手上手,简单又实用。

使用特权

评论回复
7
Bblythe| | 2024-10-5 08:39 | 只看该作者
看起来很清晰,我准备加个按键控制一起用,有没有啥建议?

使用特权

评论回复
8
Pulitzer| | 2024-10-5 08:39 | 只看该作者
刚学CW32不久,感觉这个例子挺容易理解的,拿来练练手!

使用特权

评论回复
9
Uriah|  楼主 | 2024-10-5 08:40 | 只看该作者
有没有可能把这个代码扩展一下,加个PWM输出控制呢?

使用特权

评论回复
10
Clyde011| | 2024-10-5 08:40 | 只看该作者
这个串口通信的设置和STM32有点类似啊,学过的很快就能上手。

使用特权

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

本版积分规则

17

主题

3667

帖子

0

粉丝