OpenEdv-开源电子网

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

有人注意过F407产生的随机数的位数吗?

[复制链接]

94

主题

369

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2016-8-25
在线时间
485 小时
发表于 2017-7-16 22:06:00 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 学习stm32f4 于 2017-7-16 23:03 编辑

在学习原子哥的随机数发生器例程时,了解到随机数发生器能产生一个32位的随机数。
于是我改了一下main函数中LCD_ShowNum()显示数字的位数,将原先的显示10位改成了显示14位,原本想着多余的位显示空格,但是程序下载到板子上后,发现产生的随机数是14位。
继续增大到15位,也可以满格显示,没有空格。

32位的随机数,十进制最大是4294967295,这个十进制是10位的。

但是为何屏中会显示这么多位呢?


1.jpg
2.jpg

最佳答案

查看完整内容[请看2#楼]

看显示函数是如何处理显示的!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
11547
金钱
11547
注册时间
2013-3-8
在线时间
1232 小时
发表于 2017-7-16 22:06:01 | 显示全部楼层
看显示函数是如何处理显示的!
回复

使用道具 举报

94

主题

369

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2016-8-25
在线时间
485 小时
 楼主| 发表于 2017-7-17 11:49:34 | 显示全部楼层
本帖最后由 学习stm32f4 于 2017-7-17 12:28 编辑
augustedward 发表于 2017-7-17 10:29
看显示函数是如何处理显示的!

@augustedward
非常感谢。
今天尝试着仿真时,发现位数过大时,result超范围了。
这导致产生的随机数大于result,例如7%2,结果是1,从而在多余的位产生了不期望的数字。

修改if(t%20==0)中LCD_ShowNum()显示的位数,例如也将它的第四个参数改成15,但是屏正常显示。这是为何呢?
这是因为RNG_Get_RandomRange()函数得到的随机数小于LCD_Pow()的返回值,例如,24%2456,结果还是24。故正常显示。

1.jpg
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-12-18 22:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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