写在前面
芯片型号:
stm32f030c8t6
说明:便宜,用量大
要点说明:初始化、主函数调用串口接收callback、串口接收空闲中断,串口接收中断
这种API封装方式可以拓展到其他单片机,但需要注意单片机是否支持接收空闲中断
本文注意介绍空闲中断的应用,这样就不用在定时器中计时来检测接收超时中断了
一、应用
外部定义串口接收回调
当串口数据接收完成后,在该回调中处理串口数据即可
void Uart_recvCallBack(void *buf, int len)
{
}
外部初始化串口
myUart_initialize(115200,
USART_WordLength_8b,
USART_StopBits_1,
USART_Parity_No,
Uart_recvCallBack);
二、源码
myUart.h
#ifndef __myUart_H
#define __myUart_H
#include "stm32f0xx.h"
#include "stm32f0xx_usart.h"
#include "stm32f0xx_gpio.h"
#include "stm32f0xx_rcc.h"
#include "stm32f0xx_misc.h"
#define USART_REC_LEN 200 //定义最大接收字节数
typedef void (*myUart_cb)(void *buf, int len);
void myUart_initialize( uint32_t USART_BaudRate,
uint32_t USART_WordLength,
uint32_t USART_StopBits,
uint32_t USART_Parity,
myUart_cb cb);
void myUart_setBaudRate(uint32_t USART_BaudRate);
void myUart_sendByte(uint8_t byte);
void myUart_sendBytes(uint8_t *Buffer, uint32_t Length);
uint8_t myUart_recvByte(void)