USART通讯

本文详细解释了USART与UART的区别,重点阐述了USART的同步机制,以及在STM32F10x中如何通过中断进行数据发送和接收。作者还探讨了protues仿真中的串口问题,包括波特率设置、中断处理和晶振配置等。
摘要由CSDN通过智能技术生成

提示:文章

文章目录

前言

前期疑问:
1、一开始没有搞明白到底是USART还是UART。
2、其中还涉及到一个同步的概念。同步就是是否有时钟线同步。USART是串口同步异步发送接收器。USART没有时钟线是怎么实现同步的。
3、是在中断中读数据和发数据吗,如果是的话是怎么开启中断的或者是怎么实现中断中发送接收的。
应该是有是USART_IRQn中断吧,利用USART_IRQn中断吗?
4、stm32f10x手册里面的有时钟线的图叫什么图的?
**本文目标:**实现USART通讯。实现protues仿真通讯数据显示。
疑问解答
1、是USART,USART是同步通讯。一般使用串口通讯的时候都是设置波特率的,设置波特率就是使用了时钟。有时钟就是同步通讯。虽然USART只有两根线,但是USART中接入了一根时钟线,给USART提供同步时钟。所以USRAT编程时其中一部分也是要开启时钟。
【此处应该有一张USART电路图。是叫电路图吗?】
2、USART没有时钟线是怎么实现同步的? 内部提供时钟。
3、发送不需要中断,虽然发送是有中断的。发送中断是能寄存器应该是TXIE。但是接收是一定在中断中接收的。为什么?因为如果不是在中断中接收,那USART就要不断轮询接收信号,占用CPU,所以要中断来接收数据。同理按键中断检测信号。


一、背景

最近

二、梳理串口流程

https://blog.csdn.net/qq_40791635/article/details/83038678

2.1 软件开发

2.2 protues仿真

protues仿真没有实现

2.3 keil软件仿真

keil仿真,选择UART#1实现数据打印
在这里插入图片描述
说明本身程序没有太大问题,那为什么没有在protues仿真成功呢,哔哩哔哩、百度查查看

2.4 protues实现串口打印

实现串口打印:
提交记录:
SHA-1: a6b5d909c5726dc3472f42aa1b5e2ccb95b60bdd

  • protues串口可以正常打印,需要注释掉两个函数

在这里插入图片描述

参考这篇教程实现串口打印
https://blog.csdn.net/weixin_48220838/article/details/128975779

遗留问题:
①实现rx中断
②为什么添加两个函数就不能打印了
③如何配置外部晶振时钟正常打印
④rx接受实验

2.5 配置成HSI二分频配置PLLCK实现串口打印

代码:SHA-1: 64efa29730d9080fdb45a50a23e7eac242b6f274
实现串口打印和led_running闪烁。
方法:

int main(void)
{	
	//RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
	/* LED 端口初始化 */
	LED_GPIO_Config();	 
	//按键初始化函数	
	gpio_init();
	//EXTI按键初始化函数
	bsp_exti_key_gpio_init();
	bsp_exti_key_nvic_init();
	bsp_exti_key_exti_init();
	
	//RCC初始化
	RCC_Init();			
	
	//USART初始化
	InitGPIO();
	InitUsart();		//包含了NVIC中断初始化

	while (1)
	{
		//key_process();	
		rcc_led_loop();
		printf("hello world\r\n");
	}
}

删除RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);也是可以实现的。
在这里插入图片描述

2.6 protues外部晶振实现仿真

添加晶振

proteus添加晶振
在Proteus软件中添加晶振的步骤如下:1

打开Proteus软件。
在左侧组件栏中找到“P”字母开头的选项,这通常代表元件。
在“关键字”栏中输入“CRYSTAL”,这会列出所有晶振元件。
从列表中选择第一个晶振元件并点击“确定”。
此时鼠标指针会变成一个十字形,可以在图纸上拖动以放置晶振。
在合适的位置点击鼠标左键,晶振就会被添加到电路图中。
OSC32_IN、OSC32_OUT和OSCIN、OSCOUT区别:
https://blog.csdn.net/qq_52251819/article/details/134956228

注意:protues好像不能仿真晶振啊。。。。

三、

3.1


总结

未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值