网站首页
IC库存
IC展台
电子资讯
技术资料
PDF文档
我的博客
IC72论坛
ic72 logo
资料首页最新产品 技术参数 电路图 设计应用 解决方案 代理商查询 IC替换 IC厂商 电子辞典
关键字: 技术文章 PDF资料 IC价格 电路图 代理商查询 IC替换 IC厂商 电子辞典

基于STM32G070RB的七彩星空灯教程(四)

相信大家在之前的学习中已经学习了蓝牙模块的用法,今天我们就来实战下。先打开STM32CubeMX 配置我们要用到串口(我这里以串口2 为例,大家根据自己的喜好)因为蓝牙模块默认是9600Bits/s  所以我们配置时要与蓝牙的波特率一致。如下图所示。

1620463885389354.png

同时我们使能下  串口的收发中断。

1620463899214416.png

这样串口就配置好了 点击生成代码。打开工程

1620463913740381.png

我们可以看到串口2的初始化程序。

好的  我们添加,定义一个字符的数据接收。

1620463928150963.png

添加以下代码 打开串口接收中断。

1620463941589129.png

重写串口接收中断回调函数, 代码如下


void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
    if(Buffer>='A' && Buffer <='H')
    {
        Mode_Led = Buffer;
        printf("灯光模式:%c",Mode_Led);
    }
    if(Buffer == 'I')
    {
        Mode_wait  +=10;
        if(Mode_wait==500)
            Mode_wait=490;
        printf("灯光速度:%d",500-Mode_wait);
    }
    if(Buffer == 'J')
    {
        Mode_wait  -=10;
        if(Mode_wait==40)
            Mode_wait=50;
        printf("灯光速度:%d",500-Mode_wait);
    }
    HAL_UART_Receive_IT(&huart2,&Buffer, 1);
}

这里的printf对串口发送函数进行了重定义,方法如下


int fputc(int c, FILE *stream)    //重写fputc函数
{
 /*
    huart1是工具生成代码定义的UART1结构体,
    如果以后要使用其他串口打印,只需要把这个结构体改成其他UART结构体。
*/
    HAL_UART_Transmit(&huart2, (unsigned char *)&c, 1, 1000);   
    return 1;
}

将代码复制到


/* USER CODE BEGIN 0 */
/* USER CODE END 0 */

之间。

接下来点击Options for Target  把Use MicroLIB  打上对勾

1620464087702833.png

就完成了对串口发送函数的重写。就可以正常的使用printf 函数了。我们可以通过输出一定的信息,显示出当前的状态。

我们连上蓝牙模块   发送模式对应的字符,就可以实现模式的切换,以及实现调速。

1620464137298710.png

 到这里 我们就实现了 使用蓝牙控制的效果。

热门搜索:TLP6B PS2408RA 2920078 B3429D PDU1215 2320296 01M2251SFC3 UL24RA-15 ULTRABLOK 2839376 01B5001JF SS361220 TLP712B UL603CB-6 PDU1220 LED24-C4 B30-7100-PCB 01C1001JF PS240810 UL800CB-15 1301380020 N060-002 BT137S-600D118 BT-M515RD PDUMH15
COPYRIGHT:(1998-2010) IC72 达普IC芯片交易网
客户服务:service@IC72.com 库存上载:IC72@IC72.com
(北京)联系方式: 在线QQ咨询:点击这里给我发消息 联系电话:010-82614113 传真:010-82614123
京ICP备06008810号-21 京公网安备 11010802032910 号 企业资质