接上帖吧!完成了添加MP3模块的驱动程序,完成了测试MP3的命令!开始时是遇到在STM32L431下LPUART1,open串口出现问题,还是太粗心了,竟然没有看底层串口初始化,同时也变相说明,虽说RTT使用起来很方便,但遇到问题时,还是要看明白底层的代码的。
另外,移植到雅特力板子时,便顺利了很多,但也发现些问题
1、雅特力只能写了三个串口的底层代码。如下图:
不够用的小伙伴,只能是自己添加了。
2、调用rt_thread_delay()时,速度要比STM32下慢不少,大体看了下应该是时钟配置的原因,还在具体研究中,期待有更多收获!如果大家遇到相似的问题,也可以留言。
3、添加的MP3设备,其实就是一个串口,按命令发送指令即可。借用了开发板的USER_KEY,这个KEY触发时是高电平的,大家写程序时要注意!
实现的思路时,按一下按键,发送播放下一首的指令!同时,按下按键时指示灯亮,松开时,指示灯灭!附代码。
#include <rtthread.h>
#include <rtdevice.h>
#include "board.h"
#include "drv_gpio.h"
#include "app_uart.h"
/* defined the LED2 pin: PD13 */
#define LED2_PIN GET_PIN(D, 13)
/* defined the LED3 pin: PD14 */
#define LED3_PIN GET_PIN(D, 14)
/* defined the LED4 pin: PD15 */
#define LED4_PIN GET_PIN(D, 15)
#define TEST_KEY GET_PIN(A,0)
extern void Spk_SendCMD(unsigned char CMD, unsigned char feedback, unsigned short dat);
int main(void)
{
// uint32_t Speed = 50;
int count = 1; /* set LED0 pin mode to output */
/* set LED2 pin mode to output */
rt_pin_mode(LED2_PIN, PIN_MODE_OUTPUT);
/* set LED3 pin mode to output */
rt_pin_mode(LED3_PIN, PIN_MODE_OUTPUT);
/* set LED4 pin mode to output */
rt_pin_mode(LED4_PIN, PIN_MODE_OUTPUT);
rt_pin_mode(TEST_KEY,PIN_MODE_INPUT);
if (uart_open("uart2") != RT_EOK)
{
rt_kprintf("uart open error.\n");
while (1)
{
rt_thread_delay(10);
}
}
rt_thread_delay(500);
Spk_SendCMD(0x0F, 0, 0x0101);
while (1)
{
// rt_pin_write(LED2_PIN, PIN_LOW);
// rt_thread_mdelay(Speed);
// rt_pin_write(LED3_PIN, PIN_LOW);
// rt_thread_mdelay(Speed);
// rt_pin_write(LED4_PIN, PIN_LOW);
// rt_thread_mdelay(Speed);
// rt_pin_write(LED2_PIN, PIN_HIGH);
// rt_thread_mdelay(Speed);
// rt_pin_write(LED3_PIN, PIN_HIGH);
// rt_thread_mdelay(Speed);
// rt_pin_write(LED4_PIN, PIN_HIGH);
// rt_thread_mdelay(Speed);
/* 读取按键 KEY0 的引脚状态 */
if (rt_pin_read(TEST_KEY) == PIN_HIGH)
{
rt_thread_mdelay(100);
if (rt_pin_read(TEST_KEY) == PIN_HIGH)
{
/* 按键已被按下,输出 log,点亮 LED 灯 */
rt_pin_write(LED2_PIN, PIN_LOW);
Spk_SendCMD(0x01, 0, 0x0000);
}
}
else
{
/* 按键没被按下,熄灭 LED 灯 */
rt_pin_write(LED2_PIN, PIN_HIGH);
}
rt_thread_mdelay(10);
count++;
}
}
|