STM8s 串列埠接收不定長資料

2021-10-11 19:38:57 字數 2321 閱讀 4399

usart_rtx_typedef usart1_rtx;

void uart1_initial(void)

interrupt_handler(tim4_upd_ovf_irqhandler, 23)

}//gpio_writereverse(gpioc, gpio_pin_4);

tim4_clearitpendingbit(tim4_it_update);

}interrupt_handler(uart1_tx_irqhandler, 17)

interrupt_handler(uart1_rx_irqhandler, 18)

//清中斷。

uart1_clearitpendingbit(uart1_it_rxne);

}

標頭檔案設定下

#ifndef __uart_h__

#define __uart_h__

#include "main.h"

typedef struct

usart_rtx_typedef;

extern usart_rtx_typedef usart1_rtx;

void uart1_initial(void);

void uart_sendbyte (u8 byte);

void uart_sendstring(u8 *string);

void uart_senddatas(u8 *datas,u16 num);

#endif /* __uart_h__ */

主函式測試

while(1)

//led_task();

//uart1_send_string(test_str);

//uart1_send_buffer(test_str,sizeof(test_str));

//gpio_writereverse(gpiob, gpio_pin_5);

}

實現方法也是網上分享的方式,我這裡只是把方式修改了下。串列埠傳送 間隔最好 大於等於70ms 當然 要不然會出現黏包

另外我仔細看了下,stm8s也有串列埠空閒中斷,也可以用空閒中斷的方法實現,下次有空驗證下。

/**

* @brief uart1 interrupt definition

* uart1_it possible values

* elements values convention: 0xzyx

* x: position of the corresponding interrupt

* - for the following values, x means the interrupt position in the cr2 register.

* uart1_it_txe

* uart1_it_tc

* uart1_it_rxne

* uart1_it_idle

* uart1_it_or

* - for the uart1_it_pe value, x means the flag position in the cr1 register.

* - for the uart1_it_lbdf value, x means the flag position in the cr4 register.

* y: flag position

* - for the following values, y means the flag (pending bit) position in the sr register.

* uart1_it_txe

* uart1_it_tc

* uart1_it_rxne

* uart1_it_idle

* uart1_it_or

* uart1_it_pe

* - for the uart1_it_lbdf value, y means the flag position in the cr4 register.

* z: register index: indicate in which register the dedicated interrupt source is:

* - 1==> cr1 register

* - 2==> cr2 register

* - 3==> cr4 register

*/typedef enum uart1_it_typedef;

STM8S 串列埠應用 UART2 STM8S105

少說話。多做事,下面是我驗證過沒有問題的串列埠傳送接受資料 使用mcu stm8s105c6 uart2 初始化時呼叫 gpio deinit gpiod configure pd5 6 gpio init gpiod,gpio pin 5,gpio mode in pu no it 傳送資料io ...

STM32 HAL DMA串列埠接收不定長度實現

1.使用stm32cube 直接先配置串列埠1的基礎資訊。2.然後配置dma傳輸 3.就是啟動了,在串列埠初始化之後預設是沒有開啟串列埠dma接收的。所以增加幾行 如下圖所示 4.寫串列埠1中斷函式 這個函式就是實現不等長的精髓所在了。這裡用到了類似環形佇列的方法,至於什麼是環形佇列這個不知道童鞋自...

STM8S時鐘配置

1 stm8時鐘說明 stm8上電復位後預設使用內部的高速時鐘,並分頻成為2m用於系統執行。如果我們想要使用外部時鐘,需要進行時鐘切換,切換過程中還需要使用stvp進行晶元選項字的更改。2 stm8s時鐘配置 庫函式版 1 配置內部高速振盪器 hsi 的分頻器 1分頻 clk hsiprescale...