赞
踩
先时钟配置
开启串口(这里面的TIM1和TIM2可以不用管,是我自己其他项目用到的,这里与应声虫无关)
记得要开启中断
一些其他的配置
在usart.c文件里面定义几个变量写入回调函数
RxBuff为数据缓冲区,给中断接收函数储存数据的
DataBuff为数据保存区,每次接收到的数据都保存到这里来
Rx_flag为接收标志
Rx_len为DataBuff接收长度
在这里我每发送一次数据指示灯就会闪烁一次
- void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
- {
- if(huart->Instance==USART1)
- {
- DataBuff[Rx_len++]=RxBuff[0]; //串口中断每次只接收一个字节
- Rx_flag=0;
- if(RxBuff[0]=='\n')
- {
- Rx_flag=1;
- HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);
- printf("DataBuff:%s\r\n",(char*)&DataBuff);
- RxBuff[0]=0; //发送完后要把缓冲区清零
- Rx_len=0; //发送完后要把标志位清零
- Rx_flag=0; //发送完后要把标志位清零
- memset(DataBuff,0x00,sizeof(DataBuff));//发送完后要把数据区清零
- }
- else if(Rx_len>1000)
- {
- printf("error!!!");
- }
- HAL_UART_Receive_IT(&huart1,(uint8_t*)&RxBuff,1);
- }
- }
在main.c函数while循环里面开启中断
重定向(有了这个才可以用printf在打印出数据)
运行结果
应声虫程序运行成功
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。