一、使用CubeMX配置项目
1、创建工程
2、选择STM32F103C8T6芯片
3、设置RCC
4、设置SYS
5、设置USART1
6、设置NVIC
7、创建
二、使用Keil配置代码
1、打开keil项目
2、配置代码
(1)定义全局变量
char c;//指令 #:停止 *:开始
char message[]="hello Windows\n";//输出信息
char tips[]="CommandError\n";//提示1
char tips1[]="Start.....\n";//提示2
char tips2[]="Stop......\n";//提示3
int flag=0;//标志 0:停止发送 1.开始发送
(2)main函数代码设置
接收中断:
HAL_UART_Receive_IT(&huart1, (uint8_t *)&c, 1);
while循环函数:
while (1)
{
if(flag==1){
//发送信息
HAL_UART_Transmit(&huart1, (uint8_t *)&message, strlen(message),0xFFFF);
//延时
HAL_Delay(1000);
}
}
}
(3)main函数外重写中断处理函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
//当输入的指令为#时,发送提示并改变flag
if(c=='#'){
flag=0;
HAL_UART_Transmit(&huart1, (uint8_t *)&tips2, strlen(tips2),0xFFFF);
}
//当输入的指令为*时,发送提示并改变flag
else if(c=='*'){
flag=1;
HAL_UART_Transmit(&huart1, (uint8_t *)&tips1, strlen(tips1),0xFFFF);
}
//当输入不存在指令时,发送提示并改变flag
else {
flag=0;
HAL_UART_Transmit(&huart1, (uint8_t *)&tips, strlen(tips),0xFFFF);
}
//重新设置中断
HAL_UART_Receive_IT(&huart1, (uint8_t *)&c, 1);
}
三、实验效果
1、烧录
2、使用串口调试助手观看效果
(1)发送“ # ”停止输出
(2)发送“ * ”继续输出
四、分析波形
1、进入仿真
2、添加一个USART1_SR的地址,然后将模式改为bit,最后点击close
3、波形图
五、参考案例
1、https://blog.csdn.net/qq_41799583/article/details/83749371
2、https://blog.csdn.net/qq_41799583/article/details/83749371