串口的使用
在KEIL里继续软件仿真
仿真和下载时要注意的是,仿真要选USE Simulation 而下载要选右边的JTAG。。。。
然后点击debug 进入调试界面
view--->serial windos -->UART 1
全速运行 其结果如下:
串口发送数据就到此为止。
串口接收数据
这儿写的跟上面的已经没有关系了,不要搞混。
关于从PC机发送数据到STM32,这一部分则需要中断来实现,因为我们不需要时时刻刻都来检测外部是否发出数据给STM32,因此只要有数据来,就触发中断。这里就需要配置NVIC了
void NVIC_Config(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //优先组为2
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; //打开USART中断通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3; //抢占优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //子优先级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //中断通道使能
NVIC_Init(&NVIC_InitStructure);
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); //串口接收中断使能
USART_Cmd(USART1, ENABLE);
}
其他配置比如串口复用到IO配置,串口时钟配置,和发送数据是一样的。
串口中断处理函数:
void USART1_IRQHandler(void)
{ int RX_status; //自己定义一个标志位
RX_status = USART_GetFlagStatus(USART1, USART_FLAG_RXNE);//读取接收数据标志位,如果装好了一帧数据则硬件将其置一。
if(RX_status == SET) {
USART_SendData(USART1 , USART_ReceiveData(USART1));//将收到的数据再由STM32发送给PC机。
while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET);//等待发送完成。
}
}
串口的发送接收大致如此,还是要搞懂什么数据位,硬件流,停止位,校验位什么,一个东西既然出现了就要好好分析出现的意义。想到了今天给电脑拆机清灰,电脑最好两年清一次。反正每次上螺丝都会多出那么一两个来,是不是可以不用要?
肯定不是,生产商肯定也知道节约成本什么,他们的结构工程师也知道PCB上开一个螺丝孔也是要收钱的。所以每一颗螺丝都有它的意义,所以什么校验位,停止位也有他的意义,即便我们不使用。其实剩的螺丝我也扔了,完全不知道上在哪儿!
差不多就到这里了,有问题或者需要STM32的学习资料,关注我的新浪微博@忙碌的小姚,私信我即可,
学习知识一定要主动,这是多么痛的领悟啊!!!
上一篇:STM32_USART 串口通讯详解
下一篇:利用STM32 的串口来发送和接收数据实验
推荐阅读最新更新时间:2024-11-10 10:37
设计资源 培训 开发板 精华推荐
- LT8330EDDB 3V 至 6V 输入、48V 升压转换器的典型应用电路
- 物联控制|宿舍双吊灯控制
- 具有 250:1 PWM 调光和 LED 开路保护的 LT3755EMSE-2 21W 降压-升压模式的典型应用电路
- ADR364A 4.096 V 低功耗、低噪声电压基准的典型应用,具有灌/拉能力
- AD8615AUJZ-REEL7 二阶低通滤波器运算放大器的典型应用电路
- 智能小车|arduino 蓝牙 TT遥控小车 升级版
- 具有集成升压和捕捉二极管的 LT3470HDDB 微功率降压稳压器的典型应用电路
- DC1562B-N,用于 LTC6995-2 的演示板,1 秒上电复位
- 飞翔的西湖醋鱼烟雾发生器
- 生科创曦-扩展坞制作