stm32单片机与LD3320语音模块交互法一
·
stm32单片机与LD3320语音模块交互法一
## 交互方式: stm32读取LD3320对应管脚的电平变化,实现控制
1. 硬件接线
LD3320 和 stm32
GND —— GND
5V —— 5V
注:
①LD3320的RXD,TXD,3.3V管脚可以不用管
②LD3320的P1^0外接一个LED小灯,小灯负极与LD3320和stm32共GND
2.LD3320 程序部分
LD3320参考官方的列程(YS-V0.7口令模式工程模板中),具体改动如下:
①main函数



LD3320列程:
链接:https://pan.baidu.com/s/1DuKH3GuQ08w8RABLPgQajA
提取码:49xo
3.stm32 程序部分
大致的思路:通过stm32f103的一个管脚(PA1)去读取LD3320的P1^0管脚的电平变化,然后stm32另一个管脚(PA2)去控制LED小灯的状态
LD3320收到开灯指令, P1^0输出高电平,则stm32管脚PA1读取电平,PA2输出高电平
LD3320收到关灯指令, P1^0输出低电平,则stm32管脚PA1读取电平,PA2输出低电平
参考程序:
void GPIO_Configuration(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
//输出管脚配置
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//输入管脚配置
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //下拉输入
GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
主函数:
#define LED GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1) //读取PA1电平
int main(void)
{
GPIO_Configuration();
while(1)
{
if(LED == 1)
{
GPIO_SetBits(GPIOA,GPIO_Pin_2); //PA2输出高电平
}
else
{
GPIO_ResetBits(GPIOA,GPIO_Pin_2);//PA2输出低电平
}
}
}
4.总结
因此这里可以举一反三:比如其他打开舵机,打开风扇等指令只需修改相应的口令,配置对应的IO口即可实现控制。
优点:
整体的实现思路相比于串口交互就很简单,容易实现
缺点:
需要的模块较多的时候就比较浪费单片机的IO口

工程代码
链接:https://pan.baidu.com/s/1191TB0TjnUsKqab1KhVgpA
提取码:ar29
更多推荐
所有评论(0)