- #include "stm32f4xx.h"
- #include "delay.h"
- #include "usart.h"
- #include "LED.h"
- #include "lcd.h"
- #include "usmart.h"
- #include "Key.h"
- #include "RNG.h"
-
- //LCD状态设置函数
- void led_set(u8 sta)//只要工程目录下有usmart调试函数,主函数就必须调用这两个函数
- {
- LED1=sta;
- }
- //函数参数调用测试函数
- void test_fun(void(*ledset)(u8),u8 sta)
- {
- led_set(sta);
- }
- int main(void)
- {
- u32 random;
- u8 t=0;
- delay_init(168);
- uart_init(115200);
- LED_Init();
- Key_Init();
- LCD_Init();
- POINT_COLOR=RED;
- LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");
- LCD_ShowString(30,70,200,16,16,"RNG Test");
- LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
- LCD_ShowString(30,110,200,16,16,"2023/20/23");
- while(RNG_Init())//因为RNG存在一个等待状态位是否有效的过程,所以只要初始化RNG成功,也就意味着状态位有效,可以执行下述读取随机数的程序
- //因为初始化RNG随机数发生器返回0表示初始化成功,一旦初始化返回值为1,则进入该while循环中,打印错误信息
- {
- LCD_ShowString(30,130,200,16,16,"RNG Error!");
- delay_ms(200);
- LCD_ShowString(30,130,200,16,16,"RNG Trying……");
- }
- LCD_ShowString(30,130,200,16,16,"RNG Ready! ");
- LCD_ShowString(30,150,200,16,16,"KEY0:Get Random Num");
- LCD_ShowString(30,180,200,16,16,"Random Num:");
- LCD_ShowString(30,210,200,16,16,"Random Num[0-9]:");
- POINT_COLOR=BLUE;
- while(1)
- {
- delay_ms(10);
- if(KEY0==0)
- {
- random=RNG_GetRandomNum();//获取随机数
- LCD_ShowNum(30+8*11,180,random,10,16);//显示随机数
- //30+8*11的意思是x起始坐标为30,LCD屏是按照字节来存放的,1位8个字节,Random Num占11位
- }
- if(t%20==0)//t是200ms的整数倍
- {
- LED0=!LED0;//每200ms,LED0翻转一次
- random=RNG_GetRandomRange(0,9);//获取0-9之间的随机数
- LCD_ShowNum(30+8*16,210,random,1,16);//显示范围内的随机数
- }
- delay_ms(10);
- t++;
- }
- }
-