• 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 基于STM32G070RB的七彩星空燈教程(四)

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

    作者:zhuzhaokun1987時間:2022-05-19來源:EEPW論壇收藏

    我們今天用手機通過藍牙來控制WS2812的模式和速度調節。

    本文引用地址:http://www.eventoempresarial.net/article/202205/434256.htm

    相信大家在之前的學習中已經學習了藍牙模塊的用法,今天我們就來實戰下。先打開CubeMX 配置我們要用到串口(我這里以串口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

     到這里 我們就實現了 使用藍牙控制的效果。



    評論


    相關推薦

    技術專區

    關閉
    亚洲AV无码片区一区二