//在使用本程序前,先将模块与手机端匹配成功,波特率38400
//串口1(A9、A10)接电脑,串口2(A2、A3)接蓝牙模块
//所有的波特率都为38400,蓝牙的供电为3.3-5v
//程序功能,转接蓝牙模块的指令到PC

#include "stm32f10x.h"    //在该头文件中默认定义系统时钟为72M
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "bluetooth.h"

u8 flag,data;

void USART1_IRQHandler(void)                    //串口1中断服务程序
{
  u8 dat;

if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)    //若接收数据寄存器满
  {     
    dat = (u8)(USART_ReceiveData(USART1)&0xff);   //第2个字节才是接受到的数据
    data=dat;
    flag=1;
    USART2_SendData(dat);                                                                                                                    
  }

}

void USART2_IRQHandler(void)                    //串口1中断服务程序
{
  u8 dat;

if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)    //若接收数据寄存器满
  {     
    dat = (u8)(USART_ReceiveData(USART2)&0xff);   //第2个字节才是接受到的数据
    data=dat;
    flag=2;
    USART1_SendData(dat);                                                                                                                    
  }

}

int main(void)
 {    
    RCC_Configuration();    
    delay_init();             //延时函数初始化      
    NVIC_Configuration();      //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
    uart1_init(38400);     //串口初始化为9600
    uart2_init(38400);
     while(1)
    {
//    switch (flag)
//    {
//      case 1: USART2_SendData(data); flag=0; break;
//      case 2: USART1_SendData(data); flag=0; break;    
//      default: flag=0; break;
//    }
      //USART1_SendData('A');
      delay_ms(300);
    }    
 }

#include "stm32f10x.h"
#include "bluetooth.h"
#include "usart.h"

void uart2_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_USART2, ENABLE);
     USART_DeInit(USART2);  //复位串口1
     //USART1_TX   PA.9
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PA.9
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;    //复用推挽输出
    GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA9
   
    //USART1_RX      PA.10
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
    GPIO_Init(GPIOA, &GPIO_InitStructure);  //初始化PA10

//USART 初始化设置

USART_InitStructure.USART_BaudRate = bound;//一般设置为9600;
    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); //初始化串口
    //#if EN_USART1_RX          //如果使能了接收  
   //Usart1 NVIC 配置
    NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级3
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;        //子优先级3
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;            //IRQ通道使能
    NVIC_Init(&NVIC_InitStructure);    //根据指定的参数初始化VIC寄存器
   
    USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//开启中断
    //#endif
    USART_Cmd(USART2, ENABLE);                    //使能串口
}

void  USART2_SendData(unsigned char SendData)
{
USART_SendData(USART2, SendData);
while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET); //Tansmit Data Register empty interrupt
}

Stm32标准库函数3——BlueTooth 蓝牙通讯测试 Stm32中继相关推荐

  1. STM32标准库函数之 TIM1定时器产生PWM波

    /* 函数功能:定时器1通道1 4产生PWM波 函数参数:无 函数返回值:无 函数描述:无 */ void Dingshiqi1_PWM_Init(void) {TIM_TimeBaseInitTyp ...

  2. 使用STM32标准库构建VSCode+gcc+openOCD开发STM32

    目前为止,使用STM32的平台比较流行的是keil for Arm和IAR for ARM,这两个平台都比较类似,集成编辑.编译和调试环境,俗称IDE.用户只需简单的操作就能编译和调试STM32,非常 ...

  3. keil建立stm32工程即标准库函数目录结构

    建立keil stm32工程文件 1. 标准库函数目录结构 需要分清库函数和keil的pack包,前者是ST公司对ST系列芯片编写的库函数,其中包括芯片的的启动文件和外设配置函数文件,后者是Keil ...

  4. 蓝牙认证测试调试记录

    这周由于工作原因,接手蓝牙认证测试调试,我们使用的是RDA5876芯片,调试好几次, 都发现DH1.DH3.DH5的数据包都是一样的,怎么调都不行.hciattach初始化参数都已经改了 很多次,还是 ...

  5. STM32学习笔记(十) CAN通讯测试(环回模式)

    1.CAN通讯的理解 想学习CAN通讯,那么要对通讯协议有一定的认知.通讯协议是指通信双方对数据传送控制的一种约定.约定中包括对数据格式,同步方式,传输速度,传送步骤,检纠错方式以及控制字符定义等问题 ...

  6. 基于标准库函数与基于HAL库函数的stm32编程方式

    文章目录 基于标准库函数与基于HAL库函数的stm32编程方式 一.基于标准库 1. 介绍 2. 库函数的STM32串口程序编写 二.基于HAL库 1.介绍 2.HAL库STM32串口程序编写 三.差 ...

  7. 基于标准库函数与基于HAL库函数的stm32编程方式对比

    基于标准库函数与基于HAL库函数的stm32编程方式对比 一.标准库函数 二.HAL库函数 三.差异 四.stdunio IDE试玩 参考资料 一.标准库函数 1.标准库的解释 标准外设库(Stand ...

  8. 蓝牙及蓝牙通讯Bluetooth概述

    蓝牙及蓝牙通讯Bluetooth概述 一.蓝牙介绍: (一).Bluetooth的由来及现状 蓝牙一词源于公元十世纪丹麦国王HaraldBlatand名字中的Blatand.Blatand的英文之意就 ...

  9. STM32(三)-------流水灯(标准库函数)

    流水灯(标准库函数) 知识点 GPIO 寄存器 基地址 外设 输入模式(上拉.下拉.浮空.模拟) 输出模式(推挽/开漏) 复用功能(推挽/开漏) 改变GPIO引脚状态 GPIO_Init()函数 函数 ...

最新文章

  1. 作幼儿教育软件的感受(2005-05-09)
  2. SVN更新文件全是最新,但缺少文件
  3. TREX搜索的执行最后也是通过HTTP call来完成的
  4. java linq_LINQ和Java
  5. 【POJ - 1995】Raising Modulo Numbers(裸的快速幂)
  6. DHTML中window的使用
  7. 关于富士通 T5220服务器故障处理
  8. Oracle client 使用 .net程序连接 数据库时 出现 8.1.7 的解决办法
  9. swift -- 字典
  10. 不为人知的华为和小米真相
  11. 资源下载网站整站资源|建站6万资源数据32G整站下载
  12. CentOS 5遇到Partition table entries are not in disk order
  13. 警惕分布式常见的这十大坑
  14. MobaXterm SSH 保持连接
  15. 人工智能在石油勘探开发中的应用及发展趋势(总结部分)
  16. 应用第二代测序技术的转录组组装
  17. Servlet-发送电子邮件
  18. (01)ORB-SLAM2源码无死角解析-(64) BA优化(g2o)→闭环线程:Optimizer::OptimizeSim3→Sim3变换优化
  19. CentOS install PHP
  20. mybatis 大于小于号 lt和gt

热门文章

  1. sfm三维重建源码_OpenMVG源码阅读小记
  2. 在ECSHOP商品详细页显示折扣率或节省钱数
  3. MongoDB Capped Collection介绍
  4. 指定mysql jdbctype_MyBatis JdbcType 与Oracle、MySql数据类型对应关系说明
  5. thinkphp curd 列表关联展现方式分享
  6. Java与Python混合开发
  7. 解决 Public registration is not allowed 问题
  8. 武汉流星汇聚:亚马逊无人机配送来临,无人机送货将成为趋势
  9. SAR(逐次逼近)型ADC
  10. GitHub哔哩哔哩(bilibili)当前视频所有Part,整体下载