目录
一、实验准备
软件:
- STM32CubeMX
- KEIL
- FlyMcu
- fireTools
以上软件可在以往博客查询安装
硬件:
- STM32F103C8T6
- 若干杜邦线
线路连接:
- RXD——A9
- TXD——A10
- 3.3V——3.3
- GND——GND
二、STM32CubeMX配置项目
1、新建项目
2、选择开发板
3、配置RCC
3、配置SYS
4、配置USART
5、配置NVIC
6、时钟设置
7、MDA设置
8、项目创建
PROJECT:
CODE GENERATOR:
创建项目:
三、KEIL代码配置
1、main函数
main函数前定义全局变量:
char c;//指令 0:停止 1:开始
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.开始发送
main函数中设置中断:
HAL_UART_Receive_IT(&huart1, (uint8_t *)&c, 1);
while循环中传输代码:
if(flag==1){
//发送信息
HAL_UART_Transmit(&huart1, (uint8_t *)&message, strlen(message),0xFFFF);
//延时
HAL_Delay(1000);
}
main函数下重写中断函数:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
//当输入的指令为0时,发送提示并改变flag
if(c=='0'){
flag=0;
HAL_UART_Transmit(&huart1, (uint8_t *)&tips2, strlen(tips2),0xFFFF);
}
//当输入的指令为1时,发送提示并改变flag
else if(c=='1'){
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);
}
2、编译并烧录程序
编译:
烧录:
四、通信效果
发送1开始:
发送0停止: