附件是STM32環形隊列程序,適用于UART、USB通訊,已經在多個產品中驗證。
單片機源程序如下:
- #include <stm32f10x.h>
- #include <stdio.h>
- #include "stdlib.h"
- #include <string.h>
- #include "sys.h"
- #include "queue.h"
- #include "usart1.h"
- #include "usart2.h"
- u8 buf_uart[1024];
- const vu32 uart_buf_size=sizeof(buf_uart);
-
- //==============================================================================================
- // ----Function: 寫滿回調函數
- // --Parameters:
- // -----Returns:
- //---------Note:
- //==============================================================================================
- u8 QueueWriteFull(DataQueue *Buf, QUEUE_DATA_TYPE Data, u8 Mod)
- {
- return QUEUE_FULL;
- }
- //==============================================================================================
- // ----Function: 寫滿回調函數
- // --Parameters:
- // -----Returns:
- //---------Note:
- //==============================================================================================
- void InitQueue(void)
- {
- if (QueueCreate((void *)buf_uart,
- uart_buf_size,
- NULL,
- (u8 (*)())QueueWriteFull)
- == NOT_OK)
- {
- //printf("buf_uart queue init err!\n\r");;
- }
- }
- int main(void)
- {
- vu32 temp;
- vu8 Key;
- vu8 FlashCnt=0;
- u8 data[64];
- //================================
- u16 i;
- //==================================================================
- //#define VECT_TAB_OFFSET 0 //0x4000
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //分組2:2位搶占優先級,2位響應優先級
- InitQueue();
-
- uart1_init(19200); //串口1初始化為19200---for debug
- uart2_init(19200); //串口2初始化為19200---for Encrypt
-
- while(1)
- {
- //=================== USB CMD Decode =========================
- if (QueueNData((void *)buf_uart) > 63)
- {
- for(i=0;i<64;i++)
- QueueRead(data+i, (void *)buf_uart);
- uart_puts(data);
- }
- }
- }
-
復制代碼
所有資料51hei提供下載:
STM32_Queue.7z
(249.95 KB, 下載次數: 88)
2020-3-26 23:15 上傳
點擊文件名下載附件
|