<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/202205/434256.htm

          相信大家在之前的學習中已經(jīng)學習了藍牙模塊的用法,今天我們就來實戰(zhàn)下。先打開CubeMX 配置我們要用到串口(我這里以串口2 為例,大家根據(jù)自己的喜好)因為藍牙模塊默認是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結構體,
              如果以后要使用其他串口打印,只需要把這個結構體改成其他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

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

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

          1620464137298710.png

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



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();