登录/注册

stm32蓝牙控制led灯程序

stm32蓝牙控制led灯程序

更多

以下是一个基于STM32的蓝牙控制LED灯示例程序(使用USART通信,假设蓝牙模块为HC-05/06):

#include "stm32f10x.h"

// 硬件定义
#define LED_PIN  GPIO_Pin_13
#define LED_PORT GPIOC
#define USART_TX GPIO_Pin_9
#define USART_RX GPIO_Pin_10
#define USART_PORT GPIOA

// 初始化LED GPIO
void LED_Init(void) {
    GPIO_InitTypeDef GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
    GPIO_InitStructure.GPIO_Pin = LED_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(LED_PORT, &GPIO_InitStructure);
}

// 初始化USART1
void USART1_Init(void) {
    GPIO_InitTypeDef GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;

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

    // 配置USART1 Tx (PA9) 为复用推挽输出
    GPIO_InitStructure.GPIO_Pin = USART_TX;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(USART_PORT, &GPIO_InitStructure);

    // 配置USART1 Rx (PA10) 为浮空输入
    GPIO_InitStructure.GPIO_Pin = USART_RX;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(USART_PORT, &GPIO_InitStructure);

    // USART参数配置
    USART_InitStructure.USART_BaudRate = 9600;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    USART_InitStructure.USART_StopBits = USART_StopBits_1;
    USART_InitStructure.USART_Parity = USART_Parity_No;
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_Init(USART1, &USART_InitStructure);

    // 使能接收中断
    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

    // 配置USART1中断
    NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);

    USART_Cmd(USART1, ENABLE);
}

// USART1中断服务函数
void USART1_IRQHandler(void) {
    if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) {
        char receivedChar = USART_ReceiveData(USART1);

        // 处理接收到的字符
        switch(receivedChar) {
            case 'A':  // 开灯
                GPIO_ResetBits(LED_PORT, LED_PIN);
                USART_SendData(USART1, 'O');  // 发送响应
                break;
            case 'B':  // 关灯
                GPIO_SetBits(LED_PORT, LED_PIN);
                USART_SendData(USART1, 'F');
                break;
            default:
                break;
        }
        while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); // 等待发送完成
    }
}

int main(void) {
    LED_Init();
    USART1_Init();

    // 初始状态:LED熄灭
    GPIO_SetBits(LED_PORT, LED_PIN);

    while(1) {
        // 主循环可添加其他任务
    }
}

硬件连接说明:

  1. 蓝牙模块:

    • TXD -> PA10 (USART1_RX)
    • RXD -> PA9 (USART1_TX)
    • VCC -> 3.3V
    • GND -> GND
  2. LED:

    • 正极 -> PC13(通过限流电阻)
    • 负极 -> GND

使用说明:

  1. 蓝牙配对:

    • 使用手机搜索蓝牙设备(HC-05默认名称一般为"HC-05")
    • 配对密码一般为"1234"或"0000"
  2. 数据发送:

    • 发送字符'A':点亮LED
    • 发送字符'B':熄灭LED
    • 单片机收到指令后会返回'O'(开灯成功)或'F'(关灯成功)

注意事项:

  1. 根据实际硬件修改:

    • LED引脚定义(PC13为常见开发板配置)
    • 蓝牙模块波特率(需与程序中的9600一致)
  2. 需要配置工程:

    • 包含STM32标准库文件
    • 设置正确的晶振频率(默认8MHz)
  3. 若使用其他串口:

    • 修改USART和GPIO相关配置
    • 更新中断服务函数名称
  4. 建议使用手机APP:

    • 如"Serial Bluetooth Terminal"进行测试

完整工程需要包含STM32标准库文件,建议使用Keil MDK或STM32CubeIDE进行编译。

stm32按键控制led亮灭

stm32按键控制led灯亮灭  在嵌入式系统中,硬件按键常常被用作开关

2023-09-02 17:05:41

单片机独立按键控制led程序

单片机独立按键控制LED灯程序 单片机独立按键

2023-09-02 17:05:34

Stm32F103与蓝牙模块HC05控制LED程序分享

Stm32F103与蓝牙模块HC05控制LED

2022-02-22 07:31:28

手机蓝牙控制的调光调色的LED设计原理

电子发烧友网站提供《手机蓝牙控制的调光调色的LED灯设计原理.pdf》资

资料下载 Petc 2023-11-01 09:31:02

嵌入式单片机基础篇(二十九)之Stm32F103与蓝牙模块HC05控制LED程序

Stm32F103与蓝牙模块HC05控制LED

资料下载 h1654155275.0032 2021-12-27 19:24:47

基于单片机无线手机蓝牙控制LED系统设计

基于单片机无线手机蓝牙控制小灯LED系统设计

资料下载 建立建利12 2021-11-23 17:21:21

HC-06蓝牙模块的应用说明和控制亮灭的程序免费下载

本文档的主要内容详细介绍的是HC-06蓝牙模块的应用说明和控制小灯亮灭的程序

资料下载 vinww特烦恼 2019-07-29 17:36:00

使用Arduino通过程序控制LED

本文档的主要内容详细介绍的是使用Arduino通过程序控制LED灯资料免费下载。

资料下载 哈哈哈 2019-05-31 17:54:00

如何利用stm32的串口/蓝牙控制LED的开关和亮度?

如何利用stm32的串口/蓝牙控制LED

2022-02-18 06:19:44

stm32f103c8t6是如何控制蓝牙模块实现led亮灭的

蓝牙模块该如何去调试呢?stm32f103c8t6是如何控制蓝牙模块实现

2021-11-17 07:51:20

如何设计基于STM32F429和HC-05的蓝牙控制板载LED

如何设计基于STM32F429和HC-05的蓝牙控制板载LED

2021-10-13 06:38:02

stm32f103c8t6是如何控制蓝牙模块实现led亮灭的

stm32f103c8t6控制蓝牙模块实现led

2021-08-16 07:19:30

基于蓝牙的APP是如何去控制STM32LED

一、准备工作功能:用APP控制STM32F103单片机上的部件如:LED小灯

2021-07-22 07:15:43

基于手机蓝牙控制LED该怎么设计?

普遍的蓝牙技术,采用手机蓝牙与单片机通信产生可调占空比PWM波信号控制LED

2019-10-15 06:53:48

蓝牙通信例程下载后不能控制stm32LED1的亮灭

蓝牙通信,将例程下载后能发送和接受数据,但不能控制stm32上LED1

2019-06-12 04:35:33
7天热门专题 换一换
相关标签