历史上的今天
返回首页

历史上的今天

今天是:2024年09月18日(星期三)

正在发生

2021年09月18日 | STM8单片机产生随机数

2021-09-18 来源:eefocus

最近需要用到单片机随机数,但是用rand()产生的随机数,发现每次单片机上电时产生的随机数都是一样的,没有实现真正的随机数。查资料发现要用到srand(t)产生一个随机种子,同样获取随机种子的时候也需要一个随机信号,随机信号可以通过系统时间或者悬空的AD引脚产生。但是对于单片机来说每次上电后系统时间都是一样的,所以每次上电产生的随机数也是一样的。也可以读取悬空的AD引脚值,这样每次读取AD的值是随机的,用这个产生随机数是可行的。但是由于条件限制没有悬空的AD引脚可以用。难道就没有更简单的方式实现每次上电都产生不同的随机数吗?突然想到了每次上电时单片机内存中有些地址的值是随机的,那么能不能每次一上电就去读内存中的值,然后用这些值去产生随机种子。然后写了一段测试代码,测试发现这种方法果然可行。可以实现单片机上电产生随机数,每次上电产生的随机数都不同。


测试用的是STM8S003单片机。


测试代码如下:


#include "iostm8s103F3.h"

 

#include "stdlib.h"

 

void main(void)

 

{

 

 u8 tem = 0;

 

     //系统初始化

 

srand(* ( u16 * ) ( 0x000008 ));   //直接读取内存地址的值,当做随机种子

 

 tem = rand() % 10;     //产生0--9随机数


}


推荐阅读

史海拾趣

DEWALT公司的发展小趣事

DEWALT公司始终将技术创新作为企业发展的核心动力。在创始人雷蒙得伟的领导下,公司不断投入研发,推出了一系列具有创新性的电动工具产品。这些产品不仅具有高效、耐用的特点,还满足了不同用户的需求。通过不断的技术创新和产品拓展,DEWALT公司逐渐在电动工具行业中占据了重要地位。

FOSLINK公司的发展小趣事

随着工业4.0时代的到来,FOSLINK公司积极响应智能制造的号召,投入巨资引进先进的自动化生产设备和智能管理系统。通过实施智能制造战略,FOSLINK不仅实现了生产过程的数字化、网络化和智能化,还大幅提升了生产效率和产品质量。这一变革不仅降低了公司的生产成本,还增强了其在全球市场的竞争力。FOSLINK的智能制造实践,为电子行业树立了新的标杆。

Crosspoint Solutions公司的发展小趣事

随着业务的发展,Crosspoint Solutions公司意识到单一市场无法满足其增长需求。于是,公司开始积极寻求国际合作机会,与多家国际知名电子企业建立了战略合作关系。通过技术共享和市场互补,公司成功打开了多个新的市场,业务遍布全球多个国家和地区。

Altonics公司的发展小趣事

Altonics公司创始人在XXXX年创建了这家公司,初期面临着资金短缺、市场竞争激烈和技术人才缺乏的困境。然而,创始人凭借对电子技术的深刻理解和敏锐的市场洞察力,决定专注于工业自动化控制领域的研发与生产。经过不懈的努力,公司成功开发出一款高性能的自动化控制设备,受到了市场的广泛认可,为公司的后续发展奠定了坚实的基础。

Gamma Microelectronics ( APM )公司的发展小趣事

为了提高DSSC的转换效率和长期稳定性,G24i积极寻求技术合作。公司与离子液体供应商BASF公司签署了合作协议,共同开发性能更优的离子液体和电解液配方。此外,G24i还与国内外多家科研机构建立了紧密的合作关系,共同推进DSSC技术的研发和创新。这些合作不仅为G24i带来了先进的技术支持,也促进了整个DSSC行业的快速发展。

Advanced Photonix公司的发展小趣事

随着公司实力的不断增强,Advanced Photonix开始积极拓展国际市场。公司通过与海外企业建立合作关系,共同开发新产品和新技术,不断拓宽产品应用领域和市场范围。同时,公司还积极参加国际电子展会和技术交流会议,与全球同行进行深入的交流和合作。这些举措不仅提升了公司在国际市场的知名度和影响力,也为公司的长期发展提供了更多的机遇和挑战。


请注意,这些故事是根据一般情况虚构的,并非基于Advanced Photonix公司的实际发展历史。如果需要更具体、更准确的信息,建议直接查阅该公司的官方资料或相关新闻报道。

问答坊 | AI 解惑

关于阻抗匹配的理解(转发)

阻抗匹配是指信号源或者传输线跟负载之间的一种合适的搭配方式。阻抗匹配分为低频和高频两种情况讨论。        我们先从直流电压源驱动一个负载入手。实际的电压源总是有内阻的,我们可以把一个实际电压源,等效成一个理想的 ...…

查看全部问答>

IO pad里面的high-volt tolerant 是什么意思?

是新手,刚刚接触PAD,我看有的IO pad介绍里面有“high-volt tolerant”这个内容,“high-volt tolerant” 是什么意思?      是说这个IO pad可以在PAD端的电压很高的情况下也能正常工作还是说PAD端的电压的变化范围可以很大 ...…

查看全部问答>

Vxworks下MPC8247的bootrom开发

我目前向开发一款CPU为MPC8247的BOOTROM,操作系统为vxwokrs5.5,我不想改动过大,请问这个可以参考vxworks提供的哪个开发模板? 有牛人开发过这款CPU的bootrom软件吗?麻烦指导下,谢谢! 我的邮箱,wangxm1983@sina.com …

查看全部问答>

新手问一个对话框的问题

刚开始学windows mobile编程,最近在做编程的时候碰到一个问题,我用mfc smart device建了一个对话框工程,然后在对话框上加了几个按钮,没有其他操作,但是模拟的时候手机屏幕上却一片空白,没有显示按钮,这是为什么呢?之前做了一个hello的win32 ...…

查看全部问答>

关于DXP中ERC检查的一些问题,谢谢大家的帮忙了!!急急急~~

我在画好原理图后进行了DXP的ERC检查,检查完后,出现了以下几个问题,帮忙解决一下吧~~ 1. 例如NetU1_15 contains IO pin and output pin objects(pin U1_15) 2. 例如GND contains IO pin and Power pin objects(pin U4-4、16、20、21、22等) 3 ...…

查看全部问答>

WINCE环境配置 如何开启WINCE开发之门

如题所示,本人想知道如何构造WINCE环境, 即 1. 采用什么语言开发产品是恰当的?有什么要求,比如和CE的匹配问题。 2. 开发出的产品如何才能转嫁到WINCE上运行? 3. 在CE上,内存的分配又是如何完成的?我们可能开发了多个应用程序,   ...…

查看全部问答>

keil 编译是提示c129错误的求助

我用keil 在编译一个c语言工程的时候,总是提示error c129: missing  \";\" before \'typedef\'; 但是我的源程序根本就没有语法方面的错误,后来我在网上搜了一下,说是因为keil 对中文的支持问题,程序中可能出现全角的;或者空格等等 ...…

查看全部问答>

关于bit和sbit的区别问题

以前有人提过这个问题,但我还是没有看太明白.有这样一段代码: sbit P_4=P^4; P_4=0x03&0x10; 不知道这里P_4究竟被赋了八位中的哪一位呢? …

查看全部问答>

用单片机做数据采集,传感器是0.5级,1毫米的,是否可以做到精度10的-4次方,还有在采集时,电压老是不到满,是否会影响精度。

用单片机做数据采集,传感器是0.5级,1毫米的,是否可以做到精度10的-4次方,还有在采集时,电压老是不到满,是否会影响精度。 在线等啊,搞定马上给分。…

查看全部问答>

有用过TSC2046或STM8SPI的兄弟帮忙解答

大家好,我现在用STM8与TSC2046 进行SPI通信,读触摸屏的坐标。 现在我要端口模拟SPI已与TSC2046进行正常通信,但现在想用自有的SPI模块与其通信,但是老是不行。请教一下各位大虾。最好能提供代码供学习,谢谢!!! 我的SPI初始化:MCU为 ...…

查看全部问答>