这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» DIY与开源设计» 电子DIY» 七彩星空灯教程(四)

共6条 1/1 1 跳转至

七彩星空灯教程(四)

高工
2021-05-08 16:55:55 打赏

我们今天用手机通过蓝牙来控制WS2812的模式和速度调节。

相信大家在之前的学习中已经学习了蓝牙模块的用法,今天我们就来实战下。先打开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

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




关键词: STM32 单片机 星空灯 电子DIY

工程师
2021-05-08 22:29:01 打赏
2楼

不错的教程


工程师
2021-05-08 23:22:41 打赏
3楼

讲解的不错哦


工程师
2021-05-16 23:57:10 打赏
4楼

期待下一次你的连载帖


工程师
2021-05-17 23:23:44 打赏
5楼

做的非常不错


高工
2021-06-12 23:53:43 打赏
6楼

支持一下


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]