串口通訊(SerialCommunication)是一種設備間非常常用的串行通訊方式,因為它簡單 便捷,因此大部分電子設備都支持該通訊方式,電子工程師在調試設備時也經常使用該通訊方式輸出調試信息。
1.初始化gpio口,使能RX和TX引腳GPIO時鐘
2.初始化USART,和USART時鐘;
3.初始化nvic 總中斷
4.編寫字符串發送函數
5.編寫USART 中斷服務函數
1.初始化gpio口,使能RX和TX引腳GPIO時鐘
void init_uart_gpio(void)
{
GPIO_InitTypeDef tx;
GPIO_InitTypeDef rx;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
tx.GPIO_Mode=GPIO_Mode_AF_PP;
tx.GPIO_Pin=GPIO_Pin_9;
tx.GPIO_Speed=GPIO_Speed_50MHz;
rx.GPIO_Mode=GPIO_Mode_IN_FLOATING;
rx.GPIO_Pin=GPIO_Pin_10;
GPIO_Init(GPIOA,&tx);
GPIO_Init(GPIOA,&rx);
}
2.初始化USART,和USART時鐘;
void init_uart1()
{
USART_InitTypeDef uart;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
uart.USART_BaudRate=115200;
uart.USART_HardwareFlowControl= USART_HardwareFlowControl_None;
uart.USART_Parity=USART_Parity_No;
uart.USART_StopBits=USART_StopBits_1;
uart.USART_WordLength=USART_WordLength_8b;
uart.USART_Mode= USART_Mode_Rx|USART_Mode_Tx;
USART_Init(USART1,&uart);
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
USART_Cmd(USART1,ENABLE);
3.初始化nvic 總中斷
void init_uart_nvic(void)
{
NVIC_InitTypeDef nvic;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
nvic.NVIC_IRQChannel=USART1_IRQn;
nvic.NVIC_IRQChannelPreemptionPriority=1;
nvic.NVIC_IRQChannelSubPriority= 1;
nvic.NVIC_IRQChannelCmd =ENABLE;
NVIC_Init(&nvic);
}
4.編寫字符串發送函數
void Usart_SendByte(USART_TypeDef *pUSARTx,uint8_t ch)
{
USART_SendData(pUSARTx,ch);
while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TXE)==RESET);
}
void Usart_SendString(USART_TypeDef *pUSARTx,char *str)
{
while(*str!=' 主站蜘蛛池模板: 望江县| 红原县| 黔西| 肥西县| 临澧县| 宜川县| 蕲春县| 珠海市| 大埔区| 广南县| 广平县| 西乡县| 湘乡市| 北票市| 合江县| 同江市| 蚌埠市| 称多县| 淮南市| 栾川县| 泗阳县| 班戈县| 洛阳市| 启东市| 沭阳县| 许昌市| 平利县| 洮南市| 台山市| 宁河县| 肇州县| 射阳县| 平果县| 米脂县| 瑞丽市| 涟水县| 西城区| 岢岚县| 屯昌县| 石渠县| 麟游县|