三 普通串口通信
我程序中的通信采用的是中断接收单字节,在主函数里面用一个函数来进行数据处理,比如校验等操作。
其实单片机的通信大致都是,时钟配置,IO口配置,打开io口时钟,打开串口时钟,将引脚配置成串口功能,然后设置中断以及初始化配置,只要初始化成功,几乎参照例程中的收发数据就能完成通信,然后再根据自己的需求来删减增加代码。
针对以往遇到的问题,现在再看来,可以将通信总结为:
- 初始化串口【几乎和例程中的Uartx_Init(UARTx);一致】:上代码:
void Uartx_Init(UARTx_Type* UARTx,uint32 Bounds)
{
UART_SInitTypeDef UART_para;
RCC_ClocksType RCC_Clocks;
volatile uint08 tmp08;
RCC_PERCLK_SetableEx(UARTCOMCLK, ENABLE); //UART0~5共享寄存器时钟使能
tmp08 = ((uint32_t)UARTx - UART0_BASE)>>5; //获取uart
switch(tmp08)
{
case 0:
RCC_PERCLK_SetableEx(UART0CLK, ENABLE); //UARTx时钟使能
// UART0 IO 配置
AltFunIO(GPIOF, GPIO_Pin_3, 0); //PF3 UART0 RX
AltFunIO(GPIOF, GPIO_Pin_4, 0); //PF4 UART0 TX
/*NVIC中断配置*/
NVIC_DisableIRQ(UART0_IRQn);
NVIC_SetPriority(UART0_IRQn,0); //中断优先级配置,与上位机通信/唤醒优先级最高
NVIC_Enab