stm32 中斷串口控制LED燈
#include "usart.h"
#include "led.h"
#include
/***********************************************************************
***********************************************************************/
void RCC_Configuration(void);
void GPIO_Configuration(void);
void NVIC_Configuration(void);
//void delay(vu32 nCount) //軟件延時
// {
// for(; nCount != 0; nCount--);
// }
/***********************************************************************
************************************************************************/
main()
{
u8 a;
RCC_Configuration();//系統(tǒng)時鐘配置
NVIC_Configuration();//中斷配置
GPIO_Configuration();//GPIO口配置
LED_Init();
while(1)
{
while(usart_rx_sta&0x80)
{
a=usart_rx_buf[1];
if(a == 0x01)
{
GPIO_WriteBit(GPIOD,GPIO_Pin_2,Bit_SET);
GPIO_WriteBit(GPIOA,GPIO_Pin_8,Bit_RESET);
// usart_rx_sta=0;
// usart_rx_time=0;
// usart_tx_buf[0]=0x01; //將接收到的串口數(shù)據(jù),發(fā)送出
// usart_tx_time=1;
// USART1_SEND();
printf("綠燈滅,紅燈亮");
usart_rx_buf[1]=0x00;
}
if(a == 0x02)
{
GPIO_WriteBit(GPIOD,GPIO_Pin_2,Bit_RESET);
GPIO_WriteBit(GPIOA,GPIO_Pin_8,Bit_SET);
// usart_rx_sta=0;
// usart_rx_time=0;
// usart_tx_buf[0]=0x02; //將接收到的串口數(shù)據(jù),發(fā)送出
// usart_tx_time=1;
// USART1_SEND();
printf("綠燈亮,紅燈滅");
usart_rx_buf[1]=0x00;
}
else
{
usart_rx_sta=0;
usart_rx_time=0;
}
}
}
}
//發(fā)送AA 01 AB BB(注:串口助手發(fā) 使用16進(jìn)制);綠燈滅,紅燈亮(注:串口助手收 不使用16進(jìn)制)
//發(fā)送AA 02 A8 BB(注:串口助手發(fā) 使用16進(jìn)制);綠燈亮,紅燈滅(注:串口助手收 不使用16進(jìn)制)
/*****************************************************************************
*****************************************************************************/
注:使用的ALIENTEK開發(fā)板,參考正點原子部分子程序
評論