stm32学习(入门2)

stm32学习心得

` 提示:写博客纯属第一次练手,不足之处希望多提建议


前言

我们前面写了stm32对led灯跟按键的例程,有些东西不再累赘陈述,这期我们说说串口的使用


一、什么是串口

------串口,原名叫做串行接口(Serial Interface) 。串行口不同于并行口之处在于它的数据和控制信息是一位接一位地传送出去的。虽然这样速度会慢一些,但传送距离较并行口更长,因此若要进行较长距离的通信时,应使用串行口。 而串口有很多种USART、UART、TTL、RS232、RS422、RS485都遵循类似的通信时序协议,因此都被通称为串口,而这时是电气上的,而对于硬件上的就很多了,DB9接口,DB25接口都有。
------而我们这里讲的是USART,因为小编在应用过程中发现TTL、RS232、RS422、RS485这些只要加一个电平转换芯片就行,例如TTL的ch340,cp2012,485的sp485或者max485,所以基本就是电平芯片的问题对吧
------而USART分为3部分,收发器(tx、rx)、同波特率(一秒内能传输的比特位)、共地(电信号的回路),一般如果双方都有供电,那就vcc就不接,因为能避免模块的短路以及反灌,小编的说法好像跟别人有点不同 建议都去了解了解,因为有机会在汽车、无人车或者高精度定位行业的话,不少惯导跟GNSS或者其他模块都会用到这些所谓串口

二、观察现象

在我们波特率不同的情况下我们会发现乱码

cg340短接

ch340短接

在这里插入图片描述

波特率不同情况下

在这里插入图片描述

波特率相同情况下

stm32代码

//假如参数是72  115200   pa9  pa10
void uart_init(u32 pclk2,u32 bound)
{  	 
	float temp;
	u16 mantissa;
	u16 fraction;	   
	temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV   39.0625
	mantissa=temp;				 //得到整数部分--------     39
	fraction=(temp-mantissa)*16; //得到小数部分	            1            
    mantissa<<=4;
	mantissa+=fraction; 
	RCC->APB2ENR|=1<<2;   //使能PORTA口时钟  
	RCC->APB2ENR|=1<<14;  //使能串口时钟 
	GPIOA->CRH&=0XFFFFF00F;//IO状态设置
	GPIOA->CRH|=0X000008B0;//IO状态设置 
	RCC->APB2RSTR|=1<<14;   //复位串口1
	RCC->APB2RSTR&=~(1<<14);//停止复位	   	   
	//波特率设置
 	USART1->BRR=mantissa; // 波特率设置	 
	USART1->CR1|=0X200C;  //1位停止,无校验位.
#if EN_USART1_RX		  //如果使能了接收
	//使能接收中断 
	USART1->CR1|=1<<5;    //接收缓冲区非空中断使能	    	
	MY_NVIC_Init(3,3,USART1_IRQn,2);//组2,最低优先级 
#endif
}

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

我们从配置过程中可以发现io的配置从CRL变成了CRH, 0XFFFFF00F;清空了9 10 引脚状态
0X000008B0 8对应的是1000,对应的是输入模式 ,B对应1011,对应的是复用推挽输出50Mhz,

总结

linux下串口链接: link

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值