UART通信
串口是我们非常常用的通信协议,今天写一份串口通信协议
比较简单,首先我们进行串口初始化
void UART1_Config(void)
{
/* 串口结构体配置 */
UART_InitTypeDef UART_InitStruct;
GPIO_PinAFConfig(CMSDK_PA, GPIO_PinSource9, GPIO_AF_3);
GPIO_PinAFConfig(CMSDK_PA, GPIO_PinSource10, GPIO_AF_3);
UART_InitStruct.UART_BaudRate = 9600;
UART_InitStruct.UART_WordLength = UARTM_8D_P;
UART_InitStruct.UART_StopBit = UART1StopBit;
UART_InitStruct.UART_Parity = UART_ODD_PARITY;
UART_InitStruct.UART_RXEN = ENABLE;
UART_InitStruct.UART_SampleRate = UART_SAMPLERATEX16;
UART_Init(UART1, &UART_InitStruct);
UART_Cmd(UART1, ENABLE);
}
首先需要将GPIO引脚复用,这个具体复用哪个引脚需要看你已使用的是串口几和具体的芯片手册,我这里是串口1,PA9和PA10,波特率为9600,8个数据位,1个停止位,奇校验,最后我们需要使能UART1。
在主函数里面我们定义一个数组,赋上初值,循环打印输出。
volatile uint16_t arr[32] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};
int main(void)
{
static uint8_t i;
Windows_Api_Init();
while(1)
{
Delay_1ms(1000);
UART_SendData(UART1, arr[i]);
i++;
if(i >= 9)
{
i = 0;
}
}
}
实验结果如图
完成。