当前位置: 首页 > news >正文

STM32使用rand()生成随机数并显示波形

一、随机数生成

1、加入头文件:#include "stdlib.h"

2、定义一个用作生成随机数种子的变量并加入到滴答定时器中不断自增:uint32_t run_times = 0;

3、设置种子:srand(run_times);//每次生成随机数前调用一次为佳

4、生成一个随机数:uint16_t date = rand()%(b-a+1)+a;//生成a~b区间的随机数

注:如果要在同一时间频繁生成随机数,最好错开1ms的时间

二、波形显示(采用正点原子4.3寸屏,480*800)

1、设置储存波形数据的数组指针(我这里采用动态分配内存):uint16_t *wave_date = 0;

2、给储存波形数据的数组指针分配内存:wave_date = (uint16_t *)mymalloc(SRAMEX, 720*sizeof(uint16_t));//屏幕宽800px,但只有前720px用来显示波形

3、给波形数组赋值:

for(x=0;x<720;x++)
{srand(run_times);wave_date[x] = 40+ rand()%(400-0+0)+0;	//产生 0~400之间随机数,前面+40是为了让波形整体下移HAL_Delay(1);
}

4、波形显示

	while(1){/*显示网格线*/for(x=0;x<760;x+=40)//竖线{lcd_draw_line(x,40,x,440,GRAY);}	for(y=40;y<480;y+=40)//横线{lcd_draw_line(0,y,720,y,GRAY);}	for(x=0;x<720;x++)//竖线{if(x==0){lcd_draw_point(0,wave_date[0],RED);}else{lcd_draw_line(x-1, wave_date[x-1], x, wave_date[x], RED);}}for(x=0;x<(720-1);x++) wave_date[x] = wave_date[x+1];//保留前719个点的值srand(run_times);wave_date[719] = 40+ rand()%(400-0+0)+0;	//随机生成第720个点的值HAL_Delay(100);lcd_fill(0,40,720,440,g_back_color);	//清空波形显示区域}

效果如下图:

问题:频繁刷新导致看起来一直在闪

相关文章:

  • 如何在PDF.js中改造viewer.html以实现PDF的动态加载
  • 优化WAV音频文件
  • hooker frida版just_trust_me.js 2025升级 支持boringssl unpinning
  • Skipped breakpoint at ... because of stepping in another thread问题分析
  • AI Agents系列之构建多智能体系统
  • linux驱动之poll
  • Kaggle-Bag of Words Meets Bags of Popcorn-(二分类+NLP+Bert模型)
  • Redis ③-Linux下载Redis
  • 【医学影像 AI】早产儿视网膜病变国际分类(第三版)
  • python中,处理多分类时,模型之间的参数设置
  • 《计算机视觉度量:从特征描述到深度学习》—工业检测大模型RAG白皮书
  • 星露谷物语 7000+ 大型MOD整合包
  • 18-算法打卡-哈希表-两数之和-leetcode(1)-第十八天
  • 从零开始学A2A一:A2A 协议的高级应用与优化
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(7):(1)ながら 一边。。一边 (2)。。。し。。。し。。 又……又……
  • SuperMap iClient3D for WebGL 如何加载WMTS服务
  • 天梯赛DFS合集
  • 网上图书销售系统 UML 状态图解析:触发器事件、动作与监视条件
  • Linux、Kylin OS挂载磁盘,开机自动加载
  • 香港服务器CPU对比:Intel E3与E5系列核心区别与使用场景
  • 解放日报:浦东夯实“热带雨林”式科创生态
  • 国务院任免国家工作人员:颜清辉任人社部副部长
  • 黄宾虹诞辰160周年|一次宾翁精品的大集结
  • 节前A股持续震荡,“五一”假期持股还是持币过节胜率更高?
  • 华夏幸福:去年营业收入237.65亿元,同比减亏12亿元
  • 如何反击右翼思潮、弥合社会分裂:加拿大大选镜鉴