STM32F030C8T6串列埠接收不定長資料

2021-08-14 23:28:30 字數 1667 閱讀 3122

usart.c檔案**。

#include "usart.h"

#include "gpio.h"

uart_handletypedef huart1;

/* usart1 init function */

void mx_usart1_uart_init(void)

__hal_uart_enable_it(&huart1, uart_it_rxne);

__hal_uart_enable_it(&huart1, uart_it_idle);

}void hal_uart_mspinit(uart_handletypedef* uarthandle)

}void hal_uart_mspdeinit(uart_handletypedef* uarthandle)}/*

** rewrite fputc function and make printf function work

**/int fputc(int ch, file* file)

/*** rewrite fgetc function and make scanf function work

**/int fgetc(file* file)

usart.h**:

#ifndef __usart_h

#define __usart_h

#ifdef __cplusplus

extern

"c" receiveuartdata_t;

void mx_usart1_uart_init(void);

#ifdef __cplusplus

}#endif

#endif /*__ usart_h */

中斷函式**:

uint8_t tempdata[260] = ;

uint16_t tempsize = 0;

void usart1_irqhandler(void)

}/* handle idle interruption */

if((__hal_uart_get_it(&huart1, uart_it_idle) != reset))

}}

main.c**:

#include "stm32f0xx_hal.h"

#include "usart.h"

#include "gpio.h"

#include

#include

#include

receiveuartdata_t uartdata=

, 0, false};

void

charprint(const

uint8_t* data, size_t

size);

intmain(void)

}}/*

** brief: print

char

data

**/void

charprint(const

uint8_t* data, size_t

size)

}}

可以注意到在中斷處理的時候,我採用了雙緩衝機制,保證了超長資料丟失問題,自己測試了可以正常使用。

STM32F030C8T6低功耗筆記

2018年5月8日 這個晶元的低功耗搞了好久了,剛開始是7ma降不下去,然後是降到了1ma,到現在的200ua,還是有地方沒有弄好,目標是降到50ua左右,目前遇到了問題,進入stop模式的時候降到了110ua,然後會慢慢回公升80ua。這裡先寫一下之前的一些總結。首先進入的是stop模式,因為這個...

STM32F030CCT6串列埠3使用總結

前提 實際應用中,晶元型號為stm32f030cct6,串列埠1用於模組通訊,串列埠2用於儀表通訊,串列埠3用於除錯,log輸出 void usart1 config u32 baud 方式類似,此處省略 void usart3 config u32 baud 開啟引腳復用功能時,引腳為 gpio ...

stm32f030c8t6 MCU進入低功耗模式

1.sleep 模式 2.stop 模式,在這個模式下,io管腳保持run狀態下的電平,ram保持不變,所以在進入這個狀態之前,先先將io口配置好,否則可能會有漏電流 3,standby模式下,ram不保持,io管腳進入高阻態,啟用就於系統reset rcc apb1periphclockcmd r...