官方例程中串口中断有字符限制,根据业务需要编写一个能接收更长的数据的串口程序。
#include "CH57x_common.h"
#include <stdio.h>
UINT8 RxBuff[36]; //存储要接收的字符串
UINT8 Buff[40]; //串口接收缓冲数组
UINT8 RxID = 0; //字符串存储自增变量
/* 主循环 */
int main()
{
/* 配置串口1输入:先配置IO口模式,再配置串口 */
GPIOA_SetBits(GPIO_Pin_9); // tx上拉
GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU); // RXD-配置上拉输入
GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA); // TXD-配置推挽输出,注意先让IO口输出高电平
UART1_DefInit(); //串口初始化
UART1_ByteTrigCfg(UART_1BYTE_TRIG); //设置触发方式1字节
UART1_INTCfg(ENABLE, RB_IER_RECV_RDY | RB_IER_LINE_STAT); //设置接收触发
NVIC_EnableIRQ(UART1_IRQn); // 开启串口中断
while(1);
}
/* 串口中断处理程序 */
void UART1_IRQHandler(void)
{
UINT8 i;
switch (UART1_GetITFlag())
{
case UART_II_LINE_STAT: //