芯片: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
|