当前位置:   article > 正文

STM32最小系统板与HC-06(手机串口APP控制STM32小灯)_hc-06蓝牙模块smt32

hc-06蓝牙模块smt32

STM32之串口通信 - USART

内容:使用STM32最小系统板和蓝牙模块实现 手机串口助手单片机的通讯。

硬件:STM32F103C8T6,HC-06蓝牙模块

软件:蓝牙串口助手(手机应用商店)

引脚定义:

  1. #define GPIO_TXD GPIO_Pin_9;
  2. #define GPIO_RXD GPIO_Pin_10;

注意:

TX(单片机)-RX(HC-06)

RX(单片机)-DX(HC-06)

代码:

UART.c文件代码:

1. 打开GPIOA和USART的时钟

2. 配置GPIOA引脚以及USART通信参数 

  1. void UART_Init(void)
  2. {
  3. //步骤一:
  4. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
  5. RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
  6. //步骤二:
  7. 配置GPIOA引脚
  8. (TX)
  9. GPIO_InitTypeDef GPIO_InitStructure;
  10. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出
  11. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  12. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  13. GPIO_Init(GPIOA, &GPIO_InitStructure);
  14. (RX)
  15. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//上拉输入
  16. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  17. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  18. GPIO_Init(GPIOA, &GPIO_InitStructure);
  19. //配置USART参数:
  20. USART_InitTypeDef UART_InitStructure;
  21. UART_InitStructure.USART_BaudRate = 9600; // 设置波特率为9600
  22. UART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //禁用硬件流控制
  23. UART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx; // 同时支持发送和接收
  24. UART_InitStructure.USART_Parity = USART_Parity_No; // 不使用奇偶校验
  25. UART_InitStructure.USART_StopBits = USART_StopBits_1; // 设置停止位为1
  26. UART_InitStructure.USART_WordLength = USART_WordLength_8b; // 设置数据位长度为8
  27. USART_Init(USART1, &UART_InitStructure); // 使用上述配置初始化USART1
  28. USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//函数用于配置 USART 的中断使能状态
  29. NVIC_Init_1();
  30. USART_Cmd(USART1,ENABLE);//使能USART1
  31. }

        当USART在接受到数据时,需要触发中断(NVIC),并在中断函数中对接收到的数据进行处理。

3. 中断函数

  1. void NVIC_Init_1(void)
  2. {
  3. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  4. NVIC_InitTypeDef NVIC_InitStructure;
  5. NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  6. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  7. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  8. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  9. NVIC_Init(&NVIC_InitStructure);
  10. }

 串口中断函数:目的是实现

当发送'1'时,LED灯熄灭;

当发送'0'时,LED灯点亮;

  1. void USART1_IRQHandler(void)
  2. {
  3. u8 RxData;
  4. if(USART_GetFlagStatus(USART1,USART_IT_RXNE) == SET)// 等待数据接收
  5. {
  6. RxData = USART_ReceiveData(USART1);// 读取接收到的数据:把数据存储到RxData
  7. RxData = Serial_GetRxData();
  8. if(RxData == '1')
  9. {
  10. LED_Control(0);
  11. }
  12. if(RxData == '0')
  13. {
  14. LED_Control(1);
  15. }
  16. USART_ClearITPendingBit(USART1,USART_IT_RXNE);// 清除标志位
  17. }
  18. }

led.c文件代码:

这里是直接使用STM32最小系统板上的灯(使能PC13即可点亮)

  1. #include "stm32f10x.h" // Device header
  2. #include "Delay.h"
  3. void LED_Init(void)
  4. {
  5. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
  6. GPIO_InitTypeDef GPIO_InitStructure;
  7. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  8. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
  9. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  10. GPIO_Init(GPIOC, &GPIO_InitStructure);
  11. }
  12. //LED_Control(0): 灯亮 | LED_Control(1):灯灭
  13. void LED_Control(uint8_t n)
  14. {
  15. if(n)
  16. GPIO_SetBits(GPIOC, GPIO_Pin_13);
  17. else
  18. GPIO_ResetBits(GPIOC, GPIO_Pin_13);
  19. }

4.主函数

  1. #include "stm32f10x.h" // Device header
  2. #include "UART.h"
  3. #include "LED.h"
  4. uint8_t RxData;
  5. int main(void)
  6. {
  7. UART_Init();
  8. LED_Init();
  9. while (1)
  10. {
  11. }
  12. }

程序现象:

蓝牙窜口APP(HC-6)程序现象程序现象https://live.csdn.net/v/310055

2023年7月7日20:37:23

----------------------------------------------------------

2023年9月3日19:16:10

链接:https://pan.baidu.com/s/1BHjNEUnUUpW4Vguooy1mXA 
提取码:1111

----------------------------------------------------------

2024年2月20日

链接:https://pan.baidu.com/s/1JfVN0T02vTSnB2_NsjUnSg 
提取码:0220

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/376161
推荐阅读
相关标签
  

闽ICP备14008679号