<span style="color: #666666;font-size: 23px">UART:UART是一种常见的串行通信接口,用于在单片机与外部设备之间进行数据传输,它相对简单、易于实现,并且在资源有限的单片机系统中占用较少的硬件资源,UART串口是一种异步串行通信接口,它可以通过两根线(一根发送线和一根接收线)实现数据的双向传输,通过单片机的UART接口,可以与各种外部设备进行通信,例如PC、传感器、UART串口屏等,UART接口在许多嵌入式系统中广泛应用,用于控制和监测外部设备,并实现数据的传输和交换。</span>
<a href="https://wiki.dfrobot.com.cn/_SKU_DFR0299_DFPlayer_Mini%E6%A8%A1%E5%9D%97" style="color: #8080ff; font-size: 19px;">点我跳转dfplayer模块介绍</a>
<span style="font-size:18px"><br><br><br>大家好,俺又来水积分啦,这次楼楼分享小安派的uart串口功能的简单使用,并演示用串口控制dfplayer这个MP3播放模块,根据数据手册介绍,小安派上使用的m61模组有2个uart串口(更多信息请参考bl618数据手册),在一般情况下串口0留着升级程序用,楼楼这里使用的是串口1,uart大家应该都不陌生,都比楼楼懂,就不多说了。</style>
<span style="font-size:20px"><br>模块展示:</span>
<div style="font-size:20px">
<div style="text-align:center">
</div>
<span style="font-size:20px"><br><br><br>视频演示:<br><br></span>
<div style="text-align:center">
<video controls style="width: 650px; height: 400px;">
<source src="https://whxy.shop/tools/?data=dfplayer.mp4" type="video/mp4">
你的浏览器不支持播放改视频
</video>
</div>
<span style="font-size:20px"><br><br><br>代码:<br></span>
#include "bflb_mtimer.h"
#include "bflb_uart.h"
#include <bflb_gpio.h>
#include "board.h"
struct bflb_device_s *uartx;
struct bflb_device_s *gpio;
// 串口初始化,RX引脚,TX引脚,波特率
void uart_init(uint8_t rx_pin, uint8_t tx_pin,int baudrate){
bflb_gpio_uart_init(gpio, tx_pin, GPIO_UART_FUNC_UART1_TX); //TX
bflb_gpio_uart_init(gpio, rx_pin, GPIO_UART_FUNC_UART1_RX); //RX
uartx = bflb_device_get_by_name(DEFAULT_TEST_UART);
struct bflb_uart_config_s cfg;
cfg.baudrate = baudrate; //波特率
cfg.data_bits = UART_DATA_BITS_8; // 数据位
cfg.stop_bits = UART_STOP_BITS_1; //停止位
cfg.parity = UART_PARITY_NONE; //奇偶效验
// cfg.flow_ctrl = 0;
// cfg.tx_fifo_threshold = 7; 发送缓冲区
// cfg.rx_fifo_threshold = 7; 接收缓冲区
bflb_uart_init(uartx, &cfg); // 初始化
bflb_uart_enable(uartx); // 串口使能
bflb_uart_link_rxdma(uartx, true); // DMA使能
}
int main(void)
{
uint8_t flg=0;
board_init();
gpio = bflb_device_get_by_name("gpio"); // 获取句柄
bflb_gpio_init(gpio,24,GPIO_INPUT|GPIO_PULLUP);
uart_init(26, 27,9600);
// bflb_uart_putchar(uartx,'h'); //发送一个字符
// bflb_uart_put_block(uartx, "hello world", 12); //阻塞
// bflb_uart_put(uartx, "hello world", 12); //轮询
uint8_t star[] = {0x7E, 0xFF, 0x06, 0x0D, 0x00, 0x00, 0x00, 0xFE, 0xEE, 0xEF}; // dfplayer发送开始
uint8_t stop[] = {0x7E, 0xFF, 0x06, 0x0E, 0x00, 0x00, 0x00, 0xFE, 0xED, 0xEF}; // 停止
while (1) {
bflb_mtimer_delay_ms(200);
if(! bflb_gpio_read(gpio,24)){
if(flg){
flg=0;
bflb_uart_put(uartx, stop, 10);
}
else{
flg=1;
bflb_uart_put(uartx, star, 10);
}
}
}
}
<span style="font-size:20px"><br><br>以上是一个简单的串口使用,楼楼在上面添加了一些注释,代码比较简单,通过串口控制MP3模块播放和暂停音乐,它的功能还有很多,如果大家有需求可以自行参考dfplayer手册修改代码实现想要的功能,另外,楼楼比较菜,如果代码中有错误的地方大家可以自行修改。</span>