新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于STM32G070RB的七彩星空燈教程(四)

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

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

        我們今天用手機通過藍牙來控制WS2812的模式和速度調(diào)節(jié)。

        本文引用地址:http://www.104case.com/article/202205/434256.htm

        相信大家在之前的學(xué)習(xí)中已經(jīng)學(xué)習(xí)了藍牙模塊的用法,今天我們就來實戰(zhàn)下。先打開CubeMX 配置我們要用到串口(我這里以串口2 為例,大家根據(jù)自己的喜好)因為藍牙模塊默認(rèn)是9600Bits/s  所以我們配置時要與藍牙的波特率一致。如下圖所示。

        1620463885389354.png

        同時我們使能下  串口的收發(fā)中斷。

        1620463899214416.png

        這樣串口就配置好了 點擊生成代碼。打開工程

        1620463913740381.png

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

        好的  我們添加,定義一個字符的數(shù)據(jù)接收。

        1620463928150963.png

        添加以下代碼 打開串口接收中斷。

        1620463941589129.png

        重寫串口接收中斷回調(diào)函數(shù), 代碼如下


        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對串口發(fā)送函數(shù)進行了重定義,方法如下


        int fputc(int c, FILE *stream)    //重寫fputc函數(shù)
        {
         /*
            huart1是工具生成代碼定義的UART1結(jié)構(gòu)體,
            如果以后要使用其他串口打印,只需要把這個結(jié)構(gòu)體改成其他UART結(jié)構(gòu)體。
        */
            HAL_UART_Transmit(&huart2, (unsigned char *)&c, 1, 1000);   
            return 1;
        }

        將代碼復(fù)制到


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

        之間。

        接下來點擊Options for Target  把Use MicroLIB  打上對勾

        1620464087702833.png

        就完成了對串口發(fā)送函數(shù)的重寫。就可以正常的使用printf 函數(shù)了。我們可以通過輸出一定的信息,顯示出當(dāng)前的狀態(tài)。

        我們連上藍牙模塊   發(fā)送模式對應(yīng)的字符,就可以實現(xiàn)模式的切換,以及實現(xiàn)調(diào)速。

        1620464137298710.png

         到這里 我們就實現(xiàn)了 使用藍牙控制的效果。



        關(guān)鍵詞: STM32 單片機 星空燈 STM32G070RB

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 万盛区| 通州市| 饶河县| 平遥县| 和政县| 靖远县| 渝中区| 铁岭县| 涟源市| 嘉黎县| 平顺县| 乐平市| 墨玉县| 外汇| 积石山| 靖宇县| 东平县| 衡阳市| 桂东县| 乡城县| 岳阳市| 乳山市| 扎赉特旗| 大宁县| 临西县| 临夏市| 瓮安县| 恩平市| 襄汾县| 伊吾县| 邓州市| 大港区| 灵宝市| 吉隆县| 普宁市| 彰化市| 义乌市| 丽江市| 鸡泽县| 无棣县| 渝北区|