一、隨機數生成
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); //清空波形顯示區域}
效果如下圖:
問題:頻繁刷新導致看起來一直在閃