stm32串列埠通訊

2022-08-15 20:27:15 字數 3198 閱讀 2575

配置中斷優先順序

static void nvic_configuration(void)

配置串列埠

void usart_config(void)

傳送資料

傳送乙個位元組(8位)

void usart_sendbyte( usart_typedef * pusartx, uint8_t ch)

呼叫的時候用

void usart_sendbyte( debug_usartx, 'a');//可傳送單字元,debug_usartx巨集定義 usart1

傳送16位資料

/*****************  傳送乙個16位數 **********************/

void usart_sendhalfword( usart_typedef * pusartx, uint16_t ch)

傳送8位陣列

void usart_sendarray( usart_typedef * pusartx, uint8_t *array, uint16_t num)

///重定向c庫函式scanf到串列埠,重寫向後可使用scanf、getchar等函式

int fgetc(file *f)

注:c語言呼叫printf的時候是呼叫fputc的,所以修改fputc即可用printf輸出到串列埠(記得包含stdio.h):

printf("歡迎使用野火stm32開發板\n\n\n\n");

串列埠2345的移植

/** 

* 串列埠巨集定義,不同的串列埠掛載的匯流排和io不一樣,移植時需要修改這幾個巨集

* 1-修改匯流排時鐘的巨集,uart1掛載到apb2匯流排,其他uart掛載到apb1匯流排

* 2-修改gpio的巨集

*///要開哪部分則寫哪部分

#define debug_usart1 0

#define debug_usart2 1

#define debug_usart3 0

#define debug_usart4 0

#define debug_usart5 0

#if debug_usart1

// 串列埠1-usart1

#define debug_usartx usart1

#define debug_usart_clk rcc_apb2periph_usart1

#define debug_usart_apbxclkcmd rcc_apb2periphclockcmd

#define debug_usart_baudrate 115200

// usart gpio 引腳巨集定義

#define debug_usart_gpio_clk (rcc_apb2periph_gpioa)

#define debug_usart_gpio_apbxclkcmd rcc_apb2periphclockcmd

#define debug_usart_tx_gpio_port gpioa

#define debug_usart_tx_gpio_pin gpio_pin_9

#define debug_usart_rx_gpio_port gpioa

#define debug_usart_rx_gpio_pin gpio_pin_10

//中斷源

#define debug_usart_irq usart1_irqn

#define debug_usart_irqhandler usart1_irqhandler

#elif debug_usart2

。。。//3/4類似,忽略

#elif debug_usart5

//串列埠5-uart5

#define debug_usartx uart5

#define debug_usart_clk rcc_apb1periph_uart5

#define debug_usart_apbxclkcmd rcc_apb1periphclockcmd//串列埠時鐘函式名

#define debug_usart_baudrate 115200

// usart gpio 引腳巨集定義

#define debug_usart_gpio_clk (rcc_apb2periph_gpioc|rcc_apb2periph_gpiod)//兩個gpio即有兩個時鐘要開

#define debug_usart_gpio_apbxclkcmd rcc_apb2periphclockcmd//gpio時鐘函式名

#define debug_usart_tx_gpio_port gpioc

#define debug_usart_tx_gpio_pin gpio_pin_12

#define debug_usart_rx_gpio_port gpiod

#define debug_usart_rx_gpio_pin gpio_pin_2

#define debug_usart_irq uart5_irqn

#define debug_usart_irqhandler uart5_irqhandler

#endif

中斷服務函式

void usart1_irqhandler(void)

}

輸入某個數字然後開啟燈

int main(void)

} }

stm32串列埠通訊

通訊方式 1 同步通訊 帶時鐘同步訊號傳輸 spi,iic等 2 非同步通訊 不帶時鐘用途訊號 usrt,單匯流排 stm32串列埠引腳表 串口號 rxd txd 1 pa10 pa9 2 pa3pa2 3 pb11 pb10 4 pc11 pc10 5 pd2pc12 通訊過程 接收過程 由rx入...

STM32串列埠通訊

1.常用的串列埠相關暫存器 1 usart sr狀態暫存器,對應的庫函式 flagstatus usart getflagstatus usart typedef usartx,uint16 t usart flag 2 usart dr資料暫存器,對應的庫函式 void usart senddat...

STM32串列埠通訊

串列埠作為mcu最重要的外部介面,同時也是軟體開發重要的除錯手段,其重要性不言而喻。在這裡我們主要從庫函式的角度來講述如何設定串列埠,來達到最基本的通訊功能。串列埠的設定一般可以歸結為以下幾個步驟 1 串列埠時鐘使能,gpio時鐘使能。2 設定引腳復用器對映,呼叫gpio pinafconfig函式...