```c
#include "stm32f10x.h"
#include "usart.h"
#include "ring_buffer.h"
#define BUFFER_SIZE 128
uint8_t buffer[BUFFER_SIZE]; // 定義一個(gè)大小為128的緩沖區(qū)
ring_buffer_t ring_buffer; // 定義一個(gè)環(huán)形緩沖區(qū)結(jié)構(gòu)體
void USART1_IRQHandler(void)
{
if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) // 判斷是否接收到數(shù)據(jù)
{
uint8_t data = USART_ReceiveData(USART1); // 讀取接收到的數(shù)據(jù)
ring_buffer_push(&ring_buffer, data); // 將數(shù)據(jù)壓入環(huán)形緩沖區(qū)
}
}
int main(void)
{
SystemInit(); // 系統(tǒng)初始化
USART1_Config(); // 配置USART1
ring_buffer_init(&ring_buffer, buffer, BUFFER_SIZE); // 初始化環(huán)形緩沖區(qū)
while (1)
{
if (!ring_buffer_is_empty(&ring_buffer)) // 判斷環(huán)形緩沖區(qū)是否為空
{
uint8_t data = ring_buffer_pop(&ring_buffer); // 從環(huán)形緩沖區(qū)中取出數(shù)據(jù)
// 處理接收到的數(shù)據(jù)
}
}
}
```
審核編輯 黃宇
-
STM32
+關(guān)注
關(guān)注
2309文章
11162瀏覽量
373475 -
代碼
+關(guān)注
關(guān)注
30文章
4968瀏覽量
73989 -
RK3588
+關(guān)注
關(guān)注
8文章
556瀏覽量
7333
發(fā)布評(píng)論請(qǐng)先 登錄
RK3588操控終端
【技術(shù)分享】RK3588如何搭建xenomai3+ethercat
CW32L052串口的緩沖區(qū)機(jī)制
瑞芯微RK3588與RK3576技術(shù)參數(shù)詳解
RK這2款旗艦芯片RK3588 PK RK3576,誰(shuí)是最優(yōu)選
OpenHarnomy5.1下對(duì)RK3588的編譯環(huán)境搭建
RK3576 vs RK3588:為何越來(lái)越多的開發(fā)者轉(zhuǎn)向RK3576?
RK3588S和RK3588S2差異說(shuō)明
HZ-EVM-RK3588-技術(shù)規(guī)格書
HZ-CORE-RK3588-技術(shù)規(guī)格書
FreeRTOS進(jìn)階使用之流緩沖區(qū):高效處理字節(jié)流的秘密武器
RK3588主板:多元場(chǎng)景的硬核“芯”力量
Stm32采用環(huán)形緩沖區(qū)接收rk3588的數(shù)據(jù)代碼
評(píng)論