使用ChipON MCU实现UART通信与LED控制的应用分享
最近在项目中使用了ChipON MCU,主要做了一个简单的UART串口通信和LED控制的功能。ChipON的MCU用起来感觉很灵活,而且资源也丰富,所以在这里分享一下我实现的代码。
代码实现:
在这个项目中,我用ChipON MCU通过UART与PC通信,接收从PC发送的命令控制板上的LED亮灭。简单的功能,适合入门者了解ChipON MCU的基本操作。
#include <chipon_mcu.h>
#define LED_PIN GPIO_PIN_5
#define UART_BAUDRATE 9600
void UART_Init(void) {
UART_ConfigType UART_Config;
UART_Config.baudRate = UART_BAUDRATE;
UART_Config.dataBits = UART_DATABITS_8;
UART_Config.stopBits = UART_STOPBITS_1;
UART_Config.parity = UART_PARITY_NONE;
UART_Init(UART1, &UART_Config);
UART_Enable(UART1);
}
void GPIO_Init(void) {
GPIO_InitType GPIO_InitStruct;
GPIO_InitStruct.Pin = LED_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
GPIO_Init(GPIOA, &GPIO_InitStruct);
}
void UART_ReceiveCommand(void) {
char command;
if (UART_Receive(UART1, &command, 1, 1000) == UART_OK) {
if (command == '1') {
GPIO_WritePin(GPIOA, LED_PIN, GPIO_PIN_SET);// 点亮LED
} else if (command == '0') {
GPIO_WritePin(GPIOA, LED_PIN, GPIO_PIN_RESET);// 关闭LED
}
}
}
int main(void) {
ChipON_Init();// 初始化MCU
UART_Init(); // 初始化UART
GPIO_Init(); // 初始化GPIO
while (1) {
UART_ReceiveCommand();// 等待接收命令
}
}
代码说明:
[*]UART初始化:设置波特率为9600,8个数据位,1个停止位,无校验位。
[*]GPIO初始化:配置GPIOA的引脚为推挽输出模式,用于控制LED的亮灭。
[*]命令接收与处理:通过UART接收PC发送的单字节命令,'1'表示点亮LED,'0'表示关闭LED。
这个程序非常简单,但展示了ChipON MCU基本的UART通信与GPIO控制能力。希望对刚刚接触这款MCU的朋友有所帮助。
总结:ChipON MCU的资源丰富,外围接口也很齐全,适合做很多嵌入式应用。如果有朋友在使用这款MCU遇到问题,欢迎一起交流。
这个代码看着挺简单实用的,刚好我最近也在学ChipON MCU,拿来试试! 刚接触ChipON MCU,感觉你的分享很有帮助,UART和GPIO一起用确实挺常见的。 太棒了!我也正好想实现一个UART控制LED的项目,这个代码刚好适合我参考! 我看了下代码,结构很清晰,适合新手,感谢分享! 这个UART控制LED的思路很清楚,有没有更多的ChipON MCU项目分享? 我试了下代码,运行没问题,ChipON这款MCU感觉还蛮稳定的! UART通信这块儿讲解得很详细,适合我这种刚开始摸索MCU的人! 最近正好有个小项目要用UART通信,你这篇分享刚好给了我启发,感谢! 代码简单易懂,接下来我也打算尝试把串口通信加到我的项目中去! 例程缺少USART端口重映射设置,通过查询芯片数据手册的重映射表,把USART的TX和RX映射到对应的端口才能实现与外部通讯
页:
[1]