资深版主
- 积分
- 10541
- 金钱
- 10541
- 注册时间
- 2017-2-18
- 在线时间
- 1908 小时
|
本帖最后由 peng1554 于 2018-12-24 21:47 编辑
有用户使用串口助手发送特定字符串给板子控制LED失败,所以改了这个程序
测试程序基于MINIV3的串口实验例程修改
实现的功能是:
串口助手发送"LED1 ON"字符串控制LED1亮
串口助手发送“LED1 OFF”字符串控制LED1灭
main.c中定义了buf[],调用strcpy()将USART_RX_BUF[]中的数据复制到buf[]
然后调用strncmp()来比较buf[]与"LED1 ON","LED1 OFF"进而控制LED1
[mw_shl_code=c,true]u8 buf[8];
extern u8 USART_RX_BUF[USART_REC_LEN]; //接收缓冲,最大USART_REC_LEN个字节.
int main(void)
{
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 设置中断优先级分组2
uart_init(9600); //串口初始化为9600
LED_Init(); //初始化与LED连接的硬件接口
while(1)
{
if(USART_RX_STA&0x8000)
{
strcpy((char*)buf,(char*)USART_RX_BUF); //复制USART_RX_BUF[]中的数据到buf[]
if(strncmp((const char*)buf,"LED1 ON",7)==0)//比较buf[]前7个数据
{
GPIO_ResetBits(GPIOD,GPIO_Pin_2); //PD.2 输出低
printf("LED1 ON\r\n");
}
if(strncmp((char*)buf,"LED1 OFF",8)==0) //比较buf[]前8个数据
{
GPIO_SetBits(GPIOD,GPIO_Pin_2); //PD.2 输出高
printf("LED1 OFF\r\n");
}
USART_RX_STA=0; //清除接收状态标记
}
}
}[/mw_shl_code]
|
|