• 大小: 8KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-11
  • 语言: 其他
  • 标签: BC95  STM32  

资源简介

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

评论

共有 条评论