第五章usart串口通信
USART:(UniversalSynchronous/Asynchronous Receiver/Transmitter)通用同步/异步串行接收/发送器
USART是一个全双工通用同步/异步串行收发模块,该接口是一个高度灵活的串行通信设备,串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。
串口分为公头和母头(有九针串口和二十五针串口)
其中接收数据,发送数据,信号地三个最为重要。
数据速率用波特率表示:1200 2400 4800 9600 19200 115200等
波特率越低传输距离越远
,
USART由收发数据和收发控制两部分组成
USART的引脚
USART1在APB2总线上TX :PA9 RX:PA10
USART2的TX :PA2 RX:PA3
USART3的TX :PB10 RX:PB11
USART4的TX :PC10 RX:PC11
USART5的TX :PC12 RX:PD2
HAL库函数对每个外设都建立了一个初始化结构体,比如 UART_InitTypeDef,结构体成员用于设置外设工作参数,并由外设初始化配置函数。
*HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef huart)调用,这些设定参数将会设置外设相应的寄存器,达到配置外设工作环境的目的。
HAL库函数一般会在某些头文件中,并不需要进行输入,仅需要调用即可,用户只需要输入自己的 控制代码,函数即可。
在设置USART1时
fputc()函数
int fputc ( int ch, FILE *fp )
ch 为要写入的字符,fp 为文件指针。fputc() 写入成功时返回写入的字符,失败时返回 EOF,返回值类型为 int 也是为了容纳这个负数。
fputc('a', fp);
strstr函数
strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。
这句话的意思是LED1是收到低电平0没有返回NULL那么LED1处于熄灭状态。