资源简介
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
相关资源
- stm32f407上的两个can发送和接收例程
- STM32 led 时钟
- STM32 2.4G通信例程
- 直流无刷电机方波驱动 stm32 例程代码
- STM32中文资料
- STM32蓝牙和串口程序
- STM32f103超声波模块例程
- stm32f103c8t6 4 oled.rar
- stm32f030 IAP Demo(原创)
- STM32基于rt_thread操作系统的SDHC卡文件
- NRF24L01实现51与STM32双向通讯
- STM32F103 串口程序(完整版)
- stm32 ds18b20 温度传感器 测试通过
- stm32官方例程
- STM32F103定时器中断程序
- [免费]基于stm32f103ze 的OLED驱动代码
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- STM32定时器使用入门。看了这个程序会
- SIM908 SDIO FSMC STM32 FIFO
- STM32F103 CC2500完整驱动(模拟SPI)
- AD7606采集程序
- stm32 用SPI 方式读写 SDHC
- stm32通过DMA方式采集ADC数据
- 意法半导体STM全系列微控制器STM32ST
- 基于STM32芯片的SX1278 驱动 LORA.rar
- STM32的PCB封装库,以及原理图库,48
- SX1280.rar
- STM32 DS3231驱动.zip
- STM32F103C8T6+NRF24l01无线通信
评论
共有 条评论