标题:
基于stm32的蓝牙驱动程序,控制LED等
[打印本页]
作者:
哈让男人都
时间:
2019-7-16 09:49
标题:
基于stm32的蓝牙驱动程序,控制LED等
芯片:stm32c8t6蓝牙:hc-05
单片机源程序如下:
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "timer.h"
#include "usart3.h"
#include "usart.h"
#include "hc05.h"
#include "string.h"
#include "adc.h"
int main(void)
{
double adcx;
double temp;
u16 led1pwmval=0;
u16 led2pwmval=0;
u16 led3pwmval=0;
u16 led4pwmval=0;
u8 reclen;
u8 t=0;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
usart3_init(4800); //串口初始化为9600
LED_Init(); //初始化与LED连接的硬件接口
USART3_RX_STA=0;
TIM3_PWM_Init(899,0);
TIM4_PWM_Init(899,0);
Adc_Init();
while(1)
{
if(USART3_RX_STA&0X8000) //接收到一次数据了
{ led1pwmval=0;led2pwmval=0;led3pwmval=0;led4pwmval=0;
reclen=USART3_RX_STA&0X7FFF; //??陏?Y3??
USART3_RX_BUF[reclen]=0; //?箬??彡??
if(strcmp((const char*)USART3_RX_BUF,"Smart")==0)
{ USART3_RX_STA=0;
while(1)
{
adcx=Get_Adc_Average(ADC_Channel_1,10);
temp=(double)adcx*(3.3/4096);
adcx=temp;
TIM_SetCompare1(TIM3,(adcx*adcx*200-900));
TIM_SetCompare2(TIM3,(adcx*adcx*200-900));
TIM_SetCompare3(TIM3,(adcx*adcx*200-900));
TIM_SetCompare4(TIM3,(adcx*adcx*200-900));
TIM_SetCompare1(TIM4,(adcx*adcx*200-900));
TIM_SetCompare2(TIM4,(adcx*adcx*200-900));
TIM_SetCompare3(TIM4,(adcx*adcx*200-900));
TIM_SetCompare4(TIM4,(adcx*adcx*200-900));
if(USART3_RX_STA&0X8000)break;
}
}
if(strcmp((const char*)USART3_RX_BUF,"Open")==0){led1pwmval=900;led2pwmval=900;led3pwmval=900;led4pwmval=900;u3_printf("ok");}
if(strcmp((const char*)USART3_RX_BUF,"Close")==0){led1pwmval=0;led2pwmval=0;led3pwmval=0;led4pwmval=0;u3_printf("ok");}
if(strcmp((const char*)USART3_RX_BUF,"White")==0){led1pwmval=900;u3_printf("Turned on the white to level %c\n",USART3_RX_BUF[5]);}
if(strcmp((const char*)USART3_RX_BUF,"Red")==0){led2pwmval=900;u3_printf("Turned on the Red to level %c\n",USART3_RX_BUF[3]);}
if(strcmp((const char*)USART3_RX_BUF,"Blue")==0){led3pwmval=900;u3_printf("Turned on the Blue to level %c\n",USART3_RX_BUF[4]);}
if(strcmp((const char*)USART3_RX_BUF,"Green")==0){led4pwmval=900;u3_printf("Turned on the Green to level %c\n",USART3_RX_BUF[5]);}
if(strcmp((const char*)USART3_RX_BUF,"dj")==0){LED1=!LED1;}
if(strncmp((const char*)USART3_RX_BUF,"White",5)==3)
{led1pwmval=((int)USART3_RX_BUF[5]-48)*100;u3_printf("ok");TIM_SetCompare1(TIM3,led1pwmval);}
if(strncmp((const char*)USART3_RX_BUF,"Red",3)==0)
{led2pwmval=((int)USART3_RX_BUF[3]-48)*100;u3_printf("ok");TIM_SetCompare1(TIM3,led2pwmval);}
if(strncmp((const char*)USART3_RX_BUF,"Blue",4)==0)
{led3pwmval=((int)USART3_RX_BUF[4]-48)*100;u3_printf("ok");TIM_SetCompare1(TIM3,led3pwmval);}
if(strncmp((const char*)USART3_RX_BUF,"Green",5)==0)
{led4pwmval=((int)USART3_RX_BUF[5]-48)*100;u3_printf("ok");TIM_SetCompare1(TIM3,led4pwmval);}
if(strncmp((const char*)USART3_RX_BUF,"pwm",3)==0)
{led2pwmval=((int)USART3_RX_BUF[3]-48)*100;led1pwmval=((int)USART3_RX_BUF[3]-48)*100;led3pwmval=((int)USART3_RX_BUF[3]-48)*100;led4pwmval=((int)USART3_RX_BUF[3]-48)*100;u3_printf("ok");TIM_SetCompare1(TIM3,led1pwmval);TIM_SetCompare1(TIM3,led2pwmval);TIM_SetCompare1(TIM3,led3pwmval);TIM_SetCompare1(TIM3,led4pwmval);}
USART3_RX_STA=0;
}
else
{delay_ms(50);
if(t%20==0)LED=!LED;
if(t%200==0)u3_printf("qing shu ru");
t++;
}
TIM_SetCompare1(TIM3,led2pwmval);//hong
TIM_SetCompare2(TIM3,led3pwmval);//lan
TIM_SetCompare3(TIM3,led4pwmval);
TIM_SetCompare4(TIM3,led1pwmval);//bai
TIM_SetCompare1(TIM4,led1pwmval);//bai
TIM_SetCompare2(TIM4,led4pwmval);
TIM_SetCompare3(TIM4,led3pwmval);//lan
TIM_SetCompare4(TIM4,led2pwmval);//hong
}
}
复制代码
所有资料51hei提供下载:
校电赛-LED.7z
(375.27 KB, 下载次数: 27)
2019-7-16 16:45 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2019-7-16 16:45
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1