最近在项目中使用了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遇到问题,欢迎一起交流。
|