<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

作者:zhuzhaokun1987 時(shí)間:2022-05-19 來(lái)源:EEPW論壇 收藏

我們今天用手機通過(guò)藍牙來(lái)控制WS2812的模式和速度調節。

本文引用地址:http://dyxdggzs.com/article/202205/434256.htm

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

1620463885389354.png

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

1620463899214416.png

這樣串口就配置好了 點(diǎn)擊生成代碼。打開(kāi)工程

1620463913740381.png

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

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

1620463928150963.png

添加以下代碼 打開(kāi)串口接收中斷。

1620463941589129.png

重寫(xiě)串口接收中斷回調函數, 代碼如下


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ā)送函數進(jìn)行了重定義,方法如下


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

將代碼復制到


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

之間。

接下來(lái)點(diǎn)擊Options for Target  把Use MicroLIB  打上對勾

1620464087702833.png

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

我們連上藍牙模塊   發(fā)送模式對應的字符,就可以實(shí)現模式的切換,以及實(shí)現調速。

1620464137298710.png

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



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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>