资源简介
https://download.csdn.net/download/m0_37132481/10030695
代码片段和文件信息
#include “bc95_uart.h“
#include “string.h“
#include “timer.h“
#include “delay.h“
#include “stdarg.h“
#include “stdio.h“
//#define LOS_DEV_UART_NUM 4
//los_dev_uart_t comx[LOS_DEV_UART_NUM];
//串口接收缓存区
u8 USART2_RX_BUF[USART2_MAX_RECV_LEN]; //接收缓冲最大USART3_MAX_RECV_LEN个字节.
u8 USART2_TX_BUF[USART2_MAX_SEND_LEN]; //发送缓冲最大USART3_MAX_SEND_LEN字节
//通过判断接收连续2个字符之间的时间差不大于10ms来决定是不是一次连续的数据.
//如果2个字符接收间隔超过10ms则认为不是1次连续数据.也就是超过10ms没有接收到
//任何数据则表示此次接收完毕.
//接收到的数据状态
//[15]:0没有接收到数据;1接收到了一批数据.
//[14:0]:接收到的数据长度
vu16 USART2_RX_STA=0;
void bc95_uart_init(u32 bound)
{
//GPIO端口设置
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
// NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ENABLE); //使能USART1,GPIOA时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2ENABLE);
USART_DeInit(USART2); //复位串口2
//USART2_TX GPIOA.2
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PA.2
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_Init(GPIOA &GPIO_InitStructure);//初始化GPIOA.2
//USART2_RX GPIOA.3初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;//PA3
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
GPIO_Init(GPIOA &GPIO_InitStructure);//初始化GPIOA.3
//USART 初始化设置
USART_InitStructure.USART_BaudRate = bound;//串口波特率
USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位
USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收发模式
USART_Init(USART2 &USART_InitStructure); //初始化串口1
USART_ITConfig(USART2 USART_IT_RXNE ENABLE);//开启串口接受中断
USART_Cmd(USART2 ENABLE); //使能串口1
TIM3_Int_Init(997199); //10ms中断
USART2_RX_STA=0; //清零
TIM_Cmd(TIM3DISABLE); //关闭定时器7
}
void USART2_IRQHandler(void) //串口1中断服务程序
{
u8 res;
if(USART_GetITStatus(USART2 USART_IT_RXNE) != RESET)//接收到数据
{
res =USART_ReceiveData(USART2);
if((USART2_RX_STA&(1<<15))==0)//接收完的一批数据还没有被处理则不再接收其他数据
{
if(USART2_RX_STA {
TIM_SetCounter(TIM30);//计数器清空 //计数器清空
if(USART2_RX_STA==0) //使能定时器7的中断
{
TIM_Cmd(TIM3ENABLE);//使能定时器7
}
USART2_RX_BUF[USART2_RX_STA++]=res; //记录接收到的值
}else
{
USART2_RX_STA|=1<<15; //强制标记接收完成
}
}
}
}
//串口2printf 函数
//确保一次发送数据不超过USART3_MAX_SEND_LEN字节
void u2_printf(char* fmt...)
{
u16 ij;
va_list ap;
va_start(apfmt);
vsprintf((char*)USART2_TX_BUFfmtap);
va_end(ap);
i=strlen((const char*)USART2_TX_BUF); //此次发送数据的长度
for(j=0;j {
while(USART_GetFlagStatus(USART2USART
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-06-29 14:09 BC95\
文件 6176 2018-06-12 10:35 BC95\bc95_uart.c
文件 1161 2018-05-31 16:11 BC95\bc95_uart.h
文件 17344 2018-06-28 12:11 BC95\neul_bc95.c
文件 3038 2018-06-25 15:08 BC95\neul_bc95.h
相关资源
- STM32F103C8T6核心板PCB工程
- 基于STM32F7 + USB3300 USB-HS 枚举为复合设
- STM32F103C8T6最小系统--原理图
- 基于STM32的简易运动控制器直线插补、
- MODBUS从机基于STM32
- 基于STM32实现的模拟I2C
- STM32电机闭环代码.7z
- 基于STM32的1MHz、1KHz和1Hz同步方波产生
- STM32库函数DS1302驱动文件
- STM32 DS1302驱动
- STM32 DS18b20
- 基于STM32F103C8T6的手持MP3完整PCB工程文
- STM32L4超低功耗特性概述
- STM32智能家居完整项目代码
- 用STM32的内置Flash做一个超小U盘
- stm32基于轮询方式的串口收发程序
- STM32F030C8T6串口例程
- RFID RC522 stm32f103c8t6 读写demo
- STM32 单位时间内输入方波个数统计函
- 可控硅调节220光程序和原理图.zip
- STM32_ad7705程序
- stm32 控制语音芯片 ISD1760
- STM32F103VCT6设计
- stm32f103c+电机驱动和测速+can+rs485等原
- stm32 uart1 发送接收数据
- 完美解决proteus仿真stm32
- 基于STM32的示波器原理图
- 基于STM32F103的指纹识别程序
- STM32_TCS34725数字颜色传感器
- 基于STM32的MP3播放器设计与实现(提供
评论
共有 条评论