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);	//清空波形顯示區域}

效果如下圖:

問題:頻繁刷新導致看起來一直在閃

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/901981.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/901981.shtml
英文地址,請注明出處:http://en.pswp.cn/news/901981.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

『前端樣式分享』聯系我們卡片式布局 自適應屏幕 hover動效 在wikijs中使用 (代碼拿來即用)

目錄 預覽效果分析要點響應式網格布局卡片樣式&#xff1a;陰影和過渡效果 代碼優化希望 長短不一的郵箱地址在左右居中的同時,做到左側文字對齊(wikijs可用)總結 歡迎關注 『前端布局樣式』 專欄&#xff0c;持續更新中 歡迎關注 『前端布局樣式』 專欄&#xff0c;持續更新中…

【ubuntu】在Linux Yocto的基礎上去適配Ubuntu的wifi模塊

一、修改wifi的節點名 1.找到wifi模塊的PID和VID ifconfig查看wifi模塊網絡節點的名字&#xff0c;發現是wlx44876393bb3a&#xff08;wlxmac地址&#xff09; 通過udevadm info -a /sys/class/net/wlx44876393bba路徑的命令去查看wlx44876393bba的總線號&#xff0c;端口號…

健康養生:開啟活力生活新篇章

在當代社會&#xff0c;熬夜加班、久坐不動、外賣快餐成為許多人的生活常態&#xff0c;隨之而來的是各種亞健康問題。想要擺脫身體的疲憊與不適&#xff0c;健康養生迫在眉睫&#xff0c;它是重獲活力、擁抱美好生活的關鍵。? 應對不良飲食習慣帶來的健康隱患&#xff0c;飲…

【verilog】多個 if 控制同一個變量(后面會覆蓋前面)非阻塞賦值真的并行嗎?

非阻塞賦值 (<) 是“并行”的&#xff0c;但是代碼順序會影響結果&#xff1f;”這正是 Verilog 的硬件描述本質 vs 行為語義之間的微妙之處。 &#x1f4a1;1. 非阻塞賦值真的并行嗎&#xff1f; 是的&#xff01;非阻塞賦值 < 從行為上是并行的&#xff0c;也就是說&a…

前沿篇|CAN XL 與 TSN 深度解讀

引言 1. CAN XL 標準演進與設計目標 2. CAN XL 物理層與幀格式詳解 3. 時間敏感網絡 (TSN) 關鍵技術解析 4. CAN XL + TSN 在自動駕駛領域的典型應用

vscode、cherry studio接入高德mcp服務

最近mcp協議比較火&#xff0c;好多平臺都已經開通了mcp協議&#xff0c;今天來接入下高德的mcp看看效果如何。 話不多說&#xff0c;咱們直接開干。 先來看下支持mcp協議的工具有cusor、cline等等。更新cherrystudio后發現上面也有mcp服務器了。今天咱就來試試添加高德的mcp協…

Triton(2)——Triton源碼接結構

1 triton 3.0.0 源碼結構 triton docs/&#xff1a;項目文檔 cmake/&#xff1a;構建配置相關 bin/&#xff1a;工具、腳本 CmakeLists.txt&#xff1a;cmake 配置文件 LSCENSE README.md Pyproject.toml&#xff1a;python 項目配置文件 utils/&#xff1a;項目配置文…

React 事件處理基礎

React 中最常見的兩個需求&#xff0c;一個是列表渲染&#xff0c;另一個就是綁定點擊事件。 這一篇就是從最基礎的按鈕點擊開始&#xff0c;分四個階段&#xff0c;逐步理解 React 中事件的寫法和參數傳遞方式。 &#x1f4cd;階段一&#xff1a;最簡單的點擊事件 function A…

java的lambda和stream流操作

Lambda 表達式 ≈ 匿名函數 &#xff08;Lambda接口&#xff09;函數式接口&#xff1a;傳入Lambda表達作為函數式接口的參數 函數式接口 只能有一個抽象方法的接口 Lambda 表達式必須賦值給一個函數式接口&#xff0c;比如 Java 8 自帶的&#xff1a; 接口名 作用 Functio…

Dify智能體平臺源碼二次開發筆記(6) - 優化知識庫pdf文檔的識別

目錄 前言 新增PdfNewExtractor類 替換ExtractProcessor類 最終結果 前言 dify的1.1.3版本知識庫pdf解析實現使用pypdfium2提取文本&#xff0c;主要存在以下問題&#xff1a; 1. 文本提取能力有限&#xff0c;對表格和圖片支持不足 2. 缺乏專門的中文處理優化 3. 沒有文檔結…

easyExcel單元格合并

環境 java 1.8 easyexcel 3.1.1 實現方式 自定義WriteHandler&#xff0c;實現AbstractMergeStrategy抽象類&#xff0c;實現merge 方法完成自定義的合并操作。 本測試代碼&#xff0c;實現了eques方法&#xff0c;用于判斷是否需要合并 核心代碼 實現AbstractMergeStrate…

Jenkins 簡易使用記錄

一、Jenkins 核心功能與適用場景 核心功能&#xff1a; 持續集成&#xff08;CI&#xff09;&#xff1a;自動構建代碼、運行單元測試。持續交付&#xff08;CD&#xff09;&#xff1a;自動化部署到測試/生產環境。任務調度&#xff1a;定時執行任務&#xff08;如備份、清理&…

【HFP】藍牙HFP協議音頻連接核心技術深度解析

目錄 一、音頻連接建立的總體要求 1.1 發起主體與時機 1.2 前提條件 1.3 同步連接的建立 1.4 通知機制 二、不同主體發起的音頻連接建立流程 2.1 連接建立觸發矩陣 2.2 AG 發起的音頻連接建立 2.3 HF 發起的音頻連接建立 三、編解碼器連接建立流程 3.1 發起條件 3.…

【卡洛詩】成為平價市場中的標桿西餐廳

近年來&#xff0c;中國餐飲市場在消費分級趨勢下面臨結構性調整&#xff0c;消費者對“質價比”的追求催生了新賽道的崛起。在這一背景下&#xff0c;卡洛詩西餐憑借精準的定位與系統性創新&#xff0c;以“中式西餐”為核心理念&#xff0c;成功打破西餐高價壁壘&#xff0c;…

嵌入式設備網絡的動態ID分配機制實現

文章目錄 前言一、系統設計要點二、核心數據結構2.1 設備唯一標識(DeviceUID)2.2 節點信息(Node)2.3 節點管理器(NodeManager) 三、核心算法實現3.1 初始化與清理3.1.1 初始化節點管理器3.1.2 清理節點管理器 3.2 動態ID分配策略3.2.1 查找最小可用ID3.2.2 ID使用檢查 3.3 心跳…

WebSocket 雙向通信技術詳解

引言 在現代Web應用中&#xff0c;實時通信已經成為不可或缺的一部分。想象一下聊天應用、在線游戲、股票交易平臺或協作工具&#xff0c;這些應用都需要服務器能夠即時將更新推送給客戶端&#xff0c;而不僅僅是等待客戶端請求。WebSocket技術應運而生&#xff0c;它提供了一…

kafka菜鳥教程

一、kafka原理 1、kafka是一個高性能的消息隊列系統&#xff0c;能夠處理大規模的數據流&#xff0c;并提供低延遲的數據傳輸&#xff0c;它能夠以每秒數十萬條消息的速度進行讀寫操作。 二、kafka優點 1、服務解耦 &#xff08;1&#xff09;提高系統的可維護性? 通過服務…

SQLMap工具使用

一、SQLMap介紹 SQLMap 是一款強大的開源自動化 SQL 注入工具&#xff0c;用于檢測和利用 Web 應用程序中的 SQL 注入漏洞。其工作原理是SQLMap 通過向目標 URL 發送帶有特殊構造的 SQL 語句的請求&#xff0c;觀察目標應用程序的響應&#xff0c;來判斷是否存在 SQL 注入漏洞…

virtualbox安裝xp系統卡頓的解決

安裝virtualbox的增強功能即可。 先去下載 — Oracle VirtualBox下載 VirtualBox Guest Additions iso鏡像 然后在這里導入iso鏡像 再按照這幾步操作 virtualbox按鍵 強制關閉xp-cuckoo的虛擬機 VBoxManage controlvm "xp-cuckoo" poweroff

觀察者 ? 事件總線:一路走來的碎碎念

寫給未來的自己:每次手敲事件模型都要 Google,干脆把思路和踩坑一次性記清楚。文章很長,都是嘮叨,目的是讓自己看兩眼就能把設計理由找回來。 目錄 為什么我要折騰事件模型?V0 ─ 單一事件的觀察者模式V1 ─ 多事件同步總線(類型拆分)V2 ─ 訂閱者優先級(鏈式調用可控)…