[产品应用] 使用CW32 MCU实现UART串口通信与GPIO控制

[复制链接]
1484|12
 楼主| Uriah 发表于 2024-10-5 08:37 | 显示全部楼层 |阅读模式

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

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

  1. #include "cw32f030.h"

  2. void UART_Init(void) {
  3.     // 配置UART,波特率9600
  4.     UART_Config_t uartConfig;
  5.     uartConfig.baudRate = 9600;
  6.     uartConfig.wordLength = UART_WordLength_8b;
  7.     uartConfig.stopBits = UART_StopBits_1;
  8.     uartConfig.parity = UART_Parity_No;
  9.     UART_Init(UART1, &uartConfig);
  10.     UART_Cmd(UART1, ENABLE);
  11. }

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

  19. void UART1_IRQHandler(void) {
  20.     // 接收数据并控制LED
  21.     if (UART_GetITStatus(UART1, UART_IT_RXNE)) {
  22.         char receivedChar = UART_ReceiveData(UART1);
  23.         if (receivedChar == '1') {
  24.             GPIO_SetBits(GPIOB, GPIO_Pin_1);  // 点亮LED
  25.         } else if (receivedChar == '0') {
  26.             GPIO_ResetBits(GPIOB, GPIO_Pin_1);  // 熄灭LED
  27.         }
  28.     }
  29. }

  30. int main(void) {
  31.     // 初始化UART和GPIO
  32.     UART_Init();
  33.     GPIO_Init();
  34.    
  35.     while (1) {
  36.         // 主循环等待中断
  37.     }
  38. }

代码解释:
  • 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的开发板,这个例子太及时了,感谢分享!
童雨竹 发表于 2024-10-5 08:39 | 显示全部楼层
请教一下,UART中断处理函数这块能不能再详细讲讲?
Wordsworth 发表于 2024-10-5 08:39 | 显示全部楼层
有意思!串口控制LED这个小项目很适合新手上手,简单又实用。
Bblythe 发表于 2024-10-5 08:39 | 显示全部楼层
看起来很清晰,我准备加个按键控制一起用,有没有啥建议?
Pulitzer 发表于 2024-10-5 08:39 | 显示全部楼层
刚学CW32不久,感觉这个例子挺容易理解的,拿来练练手!
 楼主| Uriah 发表于 2024-10-5 08:40 | 显示全部楼层
有没有可能把这个代码扩展一下,加个PWM输出控制呢?
Clyde011 发表于 2024-10-5 08:40 | 显示全部楼层
这个串口通信的设置和STM32有点类似啊,学过的很快就能上手。
星辰大海不退缩 发表于 2024-10-8 22:28 | 显示全部楼层
非常容易上手实践
小小蚂蚁举千斤 发表于 2024-10-9 17:27 | 显示全部楼层
串口通讯还是非常容易进行移植
szt1993 发表于 2024-10-12 10:27 | 显示全部楼层
简单的UART串口通信和GPIO控制的功能很实用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

155

主题

6185

帖子

1

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