配置中斷優先順序
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函式...