完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
1个回答
|
|
基础概念
同步:在时钟信号下进行信息的传输,比如在每个时钟的上升沿进行一次传输。 异步:不用与时钟一起传输,但若想传输成功,传送方与接收方必须约定好传送速度——波特率。 单工:单方向传输,传送方(A)与接收方(B)固定,信息只能由A到B。 双工:双向传输,可同时接收、发送。即A既可以是传送方也可以是接收方,且A可以在接收的同时发送信息。 半双工:双向传输,但不可以同时接收、发送信息。 奇偶校验:传送的一组二进制数中1的个数为奇数,即为奇校验;1的个数为偶数,即为偶校验。 本次实验采用的是异步 双工 无校验的模式。 串口初始化 void uart_init(u32 pclk2,u32 bound)//设pclk2为72,bound为9600 { float temp; u16 mantissa; u16 fraction; temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV mantissa=temp; //得到整数部分 fraction=(temp-mantissa)*16; //得到小数部分 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位停止,无校验位.(接收使能、发送使能、uart使能、禁止检验) #if EN_USART1_RX //如果使能了接收 //使能接收中断 USART1->CR1|=1<<5; //接收缓冲区非空中断使能 MY_NVIC_Init(3,3,USART1_IRQn,2);//组2,最低优先级 #endif } 主要功能:设置串口传输的波特率。 步骤简介:计算波特率、配置GPIO口、复位串口、配置传输约定、开启中断。 计算波特率 说是计算波特率,但其实是计算一个跟波特率一一对应的数值,将这个数值赋值给BRR寄存器,这样,我们调用函数时只需要输入想要配置的波特率即可。计算公式: 这是手册中给出的USARTDIV(即BRR的值)的计算公式,算出USARTDIV后将它放入BRR中 整数部分放在[15:4],小数部分放在[3:0],这里在计算小数部分时给真实的小数乘了16,比如USARTDIV为25.62,则实际存入[3:0]的数为16*0.62 = 9.92,最接近的整数是:10 = 0x0A,所以最终存入BRR[15:4]的为25,存入[3:0]的为10。 使能时钟和GPIO口设置没什么好说的,我的开发板上,接收端(RXD)为PA9、发送端(TXD)为PA10。 复位串口也是非必要的。 配置传输约定 这步比较重要 2、3位设置发送、接收使能。 13位使能串口,12位设置字长。 10位禁止校验。 5位接收缓冲区非空中断使能,即串口接收到输入时会产生中断。 这段配置对应代码 USART1->CR1|=0X200C USART1->CR1|=1<<5 MY_NVIC_Init(3,3,USART1_IRQn,2);这是配置中断优先级和分组的操作,不理解的话参考定时器中断和中断优先级简介。 到这里,串口通信的设置就结束了,具体接收到数据后要如何操作,就看你在中断函数里面如何设置了。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1801 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1629 浏览 1 评论
1096 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
735 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1684 浏览 2 评论
1944浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
745浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
580浏览 3评论
602浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
565浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 17:44 , Processed in 0.425198 second(s), Total 42, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号