当前位置:首页 > 单片机 > 单片机
[导读]STM32的串口资源相当丰富的,功能也相当强劲。本项目所使用的STM32F103C8T6最多可提供3路串口,有分数波特率发生器、支持同步单线通信和半双工单线通讯、支持LIN、支持调制解调器操作、智能卡协议和IrDASIRENDEC规范

STM32的串口资源相当丰富的,功能也相当强劲。本项目所使用的STM32F103C8T6最多可提供3路串口,有分数波特率发生器、支持同步单线通信和半双工单线通讯、支持LIN、支持调制解调器操作、智能卡协议和IrDASIRENDEC规范、具有DMA等。

串口设置的一般步骤可以总结为如下几个步骤:

1.串口时钟使能,GPIO时钟使能

2.串口复位

3.GPIO端口模式设置

4.串口参数初始化

5.开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)

6.使能串口

7.编写中断处理函数

HC-05嵌入式蓝牙串口通讯模块(以下简称模块)具有两种工作模式:命令响应工作模式和自动连接工作模式,在自动连接工作模式下模块又可分为主(Master)、从(Slave)和回环(Loopback)三种工作角色。当模块处于自动连接工作模式时,将自动根据事先设定的方式连接的数据传输;当模块处于命令响应工作模式时能执行下述所有AT命令,用户可向模块发送各种AT指令,为模块设定控制参数或发布控制命令。通过控制模块外部引脚输入电平,可以实现模块工作状态的动态转换。

前端采集模块使用了STM32F103C8T6的USART1串口通路,采用115200的波特率,数据位8位,1位停止位,无校验位,作为串口配置协议。HC-05蓝牙模块使用从机(Slave)模式,并用AT指令设置串口配置协议。蓝牙作为无线传输方式,是和安卓智能手机通信的一种简单快捷的通信方式,USART串口作为单片机与蓝牙芯片之间通信的方式。

蓝牙通信协议报文格式详情见3.2.6第4条。这样的通信协议充分利用了单片机内核的移位运算器,比如数据的第0位SendBuff[0]=HexTable[(adcValue>>12)&0x0f];同时稳定性极高,即使在数据传输途中某一位的数据出错或者丢失,只要上位机识别报文标识字符,之后的数据还是可以准确的读取,保证了数据传输的高效。而且保证了数据的可靠性,经过测试,系统连续运行3小时,可以实现0出错,错误的数据自动抛弃。


USART1使用DMA发送配置和接收中断代码


voiduart_init(u32bound){

//GPIO端口设置

GPIO_InitTypeDefGPIO_InitStructure;

USART_InitTypeDefUSART_InitStructure;

NVIC_InitTypeDefNVIC_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE);//使能USART1,GPIOA时钟

USART_DeInit(USART1);//复位串口1

//USART1_TXPA.9

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//PA.9

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//复用推挽输出

GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化PA9

//USART1_RXPA.10

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//浮空输入

GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化PA10

//Usart1NVIC配置

NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;//抢占优先级3

NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;//子优先级3

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//IRQ通道使能

NVIC_Init(&NVIC_InitStructure);//根据指定的参数初始化VIC寄存器

//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(USART1,&USART_InitStructure);//初始化串口

USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//接收寄存器满开启中断

USART_Cmd(USART1,ENABLE);//使能串口

USART_DMACmd(USART1,USART_DMAReq_Tx,ENABLE);

}

voidUSART1_IRQHandler(void)//串口1中断服务程序

{

uint8_tRes=0;

if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)//接收中断(接收寄存器满中断)

{

Res=USART_ReceiveData(USART1);//(USART1->DR);//读取接收到的数据

}

if(USART_GetITStatus(USART1,USART_IT_TXE)!=RESET)//接收中断(发送寄存器空中断)

{

}

}


这里使用USART的DMA发送,同时使用接收中断。其中Res是接收到的数据。DMA配置详情请参考http://blog.csdn.net/devintt/article/details/46998173


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

蓝牙技术,以其独特的名字和广泛的影响力,已经成为现代生活中不可或缺的一部分,它改变了我们连接设备的方式,极大地促进了各种电子设备间的无线通信。然而,“蓝牙”这一名称并非随意而定,而是深深植根于欧洲的历史之中,背后蕴含着深...

关键字: 蓝牙 Bluetooth

CEM102 模拟前端(AFE)为生物化学、空气质量、气体和有害化学物质的测量提供超高精度和超低功耗

关键字: 电化学传感器 蓝牙

在德国纽伦堡举行的嵌入式世界展览会上,R&S将在 R&S CMW500 宽带无线通信测试仪上进行该技术演示。蓝牙® 信道探测功能将为消费者和商业应用带来前所未有的定位精度。支持芯片和设备研发的信号测量功能是业界翘首以盼的...

关键字: 蓝牙 无线通信 芯片

2024年3月14日 – 专注于引入新品的全球电子元器件和工业自动化产品授权代理商贸泽电子 (Mouser Electronics) 即日起开售Laird Connectivity的Sera NX040超宽带 (UWB)...

关键字: IoT UWB 蓝牙

该环境物联网研究报告预测了物联网的发展演变和市场增长趋势

关键字: 物联网 蓝牙

RivieraWaves 蓝牙5.4 IP 结合 SKAIChips 自主研发射频/电源/模拟/AI 专业技术,以实现最低功耗,对于ESL 和相关工业应用至关重要

关键字: 蓝牙 AI 集成电路

2024年2月19日 – 专注于推动行业创新的知名新品引入 (NPI) 代理商™贸泽电子 (Mouser Electronics) 即日起供应Qorvo的QPG6105DK Matter™和蓝牙开发套件。借助QPG610...

关键字: IoT设备 蓝牙 物联网

Holtek新推出HT32F67575 Arm® Cortex®双内核(M33 & M0+)低功耗蓝牙MCU,通过蓝牙技术联盟(Bluetooth SIG) BT5.3认证,具备超低功耗的接收器,在1Mbps的数...

关键字: MCU 接收器 蓝牙

理论上,用户位于接入点周围的某个区域,但如果被墙遮挡,建筑物内的有效传输距离将小于室外。

关键字: 无线通信 Wi-Fi 蓝牙

随着社交媒体和互联网的不断普及,人们对数据传输和通讯的需求也越来越高。

关键字: 近场通信 蓝牙 NFC
关闭
关闭