STM32五個串列埠同時收發函式配置

2021-09-26 22:36:27 字數 4387 閱讀 9065

#include "user_usart.h"

#include "stm32f10x_usart.h"

/*使用microlib的方法*/

/* int fputc(int ch, file *f)

return ch;

}int getkey (void) */

//#if en_usart1_rx //如果使能了接收

//#if en_usart1_rx //如果使能了接收

//串列埠1中斷服務程式

//注意,讀取usartx->sr能避免莫名其妙的錯誤

//u8 usart_rx_buf[usart_rec_len]; //接收緩衝,最大usart_rec_len個位元組.

//接收狀態

//bit15, 接收完成標誌

//bit14, 接收到0x0d

//bit13~0, 接收到的有效位元組數目

u8 checkdata[1]; //檢測串列埠1接收的特定資料資料

//串列埠1佇列定義

u8 uart1sendbuff[uart1buffsize]; //傳送資料

u8 uart1recebuff[uart1buffsize]; //接收資料?

u16 uart1recein = 0;//接收狀態標記資料位

u8 uart1recefullflag = 0;//接收完資料標誌位

//串列埠2佇列定義

u8 uart2sendbuff[uart2buffsize];

u8 uart2recebuff[uart2buffsize];

u16 uart2recein = 0;

u8 uart2recefullflag = 0;

//串列埠3佇列定義

u8 uart3sendbuff[uart3buffsize];

u8 uart3recebuff[uart3buffsize];

u16 uart3recein = 0;

u8 uart3recefullflag = 0;

//串列埠4佇列定義

u8 uart4sendbuff[uart4buffsize];

u8 uart4recebuff[uart4buffsize];

u16 uart4recein = 0;

u8 uart4recefullflag = 0;

//串列埠5佇列定義

u8 uart5sendbuff[uart5buffsize];

u8 uart5recebuff[uart5buffsize];

u16 uart5recein = 0;

u8 uart5recefullflag = 0;

u8 usartflag; //串列埠中斷接收資料的標誌位 串列埠2 串列埠3

//串列埠1初始化

void usart1_configuration(u32 bound)

//串列埠2初始化

void usart2_configuration(u32 bound)

//串列埠3初始化

void usart3_configuration(u32 bound)

//串列埠4初始化

void uart4_configuration(u32 bound)

//串列埠5初始化

void uart5_configuration(u32 bound)

//串列埠1傳送一幀資料

void usart1_sendonedata(uint8_t sendonedata)}

//串列埠2傳送一幀資料

void usart2_sendonedata(uint8_t sendonedata)}

//串列埠3傳送一幀資料

void usart3_sendonedata(uint8_t sendonedata)}

//串列埠4傳送一幀資料

void uart4_sendonedata(uint8_t sendonedata)}

//串列埠5傳送一幀資料

void uart5_sendonedata(uint8_t sendonedata)}

//串列埠1傳送一列資料

void usart1_sendunfixeddata(uint8_t *buffer, uint8_t length)

usart_clearitpendingbit(usart1, usart_it_rxne);//清除相對應的中斷位 清除中斷預處理位usart_clearitpendingbit左移八位是usart_clearflag

} else if(usart_getitstatus(usart1, usart_it_txe) != reset) // 傳送中斷 usart_getitstatus }

//串列埠2中斷服務函式

void usart2_irqhandler(void)

if(uart2recein >= 4)

usart_clearitpendingbit(usart2, usart_it_rxne);//清除相對應的中斷位 清除中斷預處理位usart_clearitpendingbit左移八位是usart_clearflag

} else if(usart_getitstatus(usart2, usart_it_txe) != reset) // 傳送中斷 usart_getitstatus

} //串列埠3中斷服務函式

void usart3_irqhandler(void)

if(uart3recein >= 57)

usart_clearitpendingbit(usart3, usart_it_rxne);//清除相對應的中斷位 清除中斷預處理位usart_clearitpendingbit左移八位是usart_clearflag

} else if(usart_getitstatus(usart3, usart_it_txe) != reset) // 傳送中斷 usart_getitstatus }

//串列埠4中斷服務函式

void uart4_irqhandler(void)

if(uart4recein >= 57)

usart_clearitpendingbit(uart4, usart_it_rxne);//清除相對應的中斷位 清除中斷預處理位usart_clearitpendingbit左移八位是usart_clearflag

} else if(usart_getitstatus(uart4, usart_it_txe) != reset) // 傳送中斷 usart_getitstatus }

//串列埠5中斷服務函式

void uart5_irqhandler(void)

if(uart5recein >= 57)

usart_clearitpendingbit(uart5, usart_it_rxne);//清除相對應的中斷位 清除中斷預處理位usart_clearitpendingbit左移八位是usart_clearflag

} else if(usart_getitstatus(uart5, usart_it_txe) != reset) // 傳送中斷 usart_getitstatus }

/*********************************

串列埠中斷服務函式

void usart1_irqhandler(void)

else

break;

case 1:

if(rs485_rx_buf[rs485_rx_cnt]==0xbb)

else

break;

case 2:

if(rs485_rx_buf[rs485_rx_cnt]==0x01)

else

break;

case 3:

if(rs485_rx_buf[rs485_rx_cnt]==0x04)

else

break;

case 4:

recduoji[0]=rs485_rx_buf[4];

rs485_rx_cnt++;

break;

case 5:

if(rs485_rx_buf[rs485_rx_cnt]==0xcc)

else

break;

case 6:

if(rs485_rx_buf[rs485_rx_cnt]==0xdd)

else

break;

default:

rs485_rx_cnt++;

break ;

}if(rs485_rx_cnt>=6) }

}******************************/

STM32五個串列埠同時收發函式配置

include user usart.h include stm32f10x usart.h 使用microlib的方法 int fputc int ch,file f return ch int getkey void if en usart1 rx 如果使能了接收 if en usart1 rx...

STM32串列埠收發

串列埠初始化 使能串列埠 使能中斷 傳送資料 接收資料 獲取狀態標誌位 清除狀態標誌位 獲取中斷狀態標誌位 清除中斷狀態標誌位 define usart rec len 200 定義最大接收位元組數 200 define en usart1 rx 1 使能 1 禁止 0 串列埠1接收 extern ...

STM32 二 串列埠收發

使用485介面接收資料,然後返回接收的資料。usart configuration while 1 2.1.usart configuration 開起時鐘 io口時鐘 串列埠開時鐘 開啟復用時鐘 復用設定 中斷初始化 io輸入輸出設定 485共有3個引腳,收發控制引腳 預設為收 收引腳,發引腳。串...