OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4618|回复: 3

串口代码不懂。。求教

[复制链接]

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2013-10-12
在线时间
9 小时
发表于 2013-11-2 00:59:47 | 显示全部楼层 |阅读模式
void uart_init(u32 pclk2,u32 bound) 
float temp; 
u16 mantissa; 
 u16 fraction;  
temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV 
mantissa=temp; //得到整数部分
fraction=(temp-mantissa)*16; //得到小数部分。    这里怎么得到小数部分的?  mantissa=temp; 不就是temp-mantissa=0?
mantissa<<=4; 
mantissa+=fraction; 
 RCC->APB2ENR|=1<<2; //使能PORTA口时钟
 RCC->APB2ENR|=1<<14; //使能串口时钟
GPIOA->CRH=0X444444B4;//IO状态设置
 RCC->APB2RSTR|=1<<14; //复位串口1 
RCC->APB2RSTR&=~(1<<14);//停止复位
//波特率设置
 USART1->BRR=mantissa;
 USART1->CR1|=0X200C; //1位停止,无校验位.     这里把TX  RX  还有PS 都设置为1。  ps置 1不是奇校验的意思吗?



#ifdef EN_USART1_RX   //如果使能了接收
 USART1->CR1|=1<<8; //使能接收中断,PE 中断使能                                    # ifdef EN_USART1_RX   是在哪里define? 怎么知道有没有define呢?
                                                                               知道大概的意思就是 : 接收数据还有校验错误时产生中断 ,并定义优先级
 USART1->CR1|=1<<5; //接收缓冲区非空中断使能   
MY_NVIC_Init(3,3,USART1_IRQChannel,2);//组2,最低优先级
#endif 
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2013-11-2 08:24:33 | 显示全部楼层
回复【楼主位】slzfqzh:
---------------------------------
楼主还是数学演算一遍就明白了。

建议楼主看下“STM32中文参考手册_V1.0”中的“25.6.4 控制寄存器1(USART_CR1)”章节
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2013-10-12
在线时间
9 小时
 楼主| 发表于 2013-11-2 10:33:41 | 显示全部楼层
回复【2楼】Badu_Space:
---------------------------------
懂了。麻烦你了。
回复 支持 反对

使用道具 举报

4

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2013-10-24
在线时间
0 小时
发表于 2013-11-4 10:04:10 | 显示全部楼层
回复【楼主位】slzfqzh:
---------------------------------
我可以回答第一个问题,mantissa=temp是不相等的,因为mantissa是16位的整形,而temp是浮点型,浮点型-整形自然就是小数部分。个人理解,不知道对不?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-9 19:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表