LCD_clear(Fcolor); //ÇåÆÁ£¬ Pic60X60_QQ(89,129); //60*60µÄͼƬÉèÖÃXYÖµ GUI_sprintf_string(1,200,"ADD=",BLACK,WHITE); DISP_u32_num(33,200,ADD,BLACK,WHITE); GUI_sprintf_string(135,200,"Status=",BLACK,WHITE); DISP_u8_num(195,200,W25Q_ReadStatus(),BLACK,WHITE);
时间: 2023-08-01 15:09:43 浏览: 51
这段代码是用于在LCD上进行显示的。首先,使用`LCD_clear`函数来清空LCD屏幕并填充指定颜色。然后,使用`Pic60X60_QQ`函数在坐标(89,129)处绘制一张60x60的图片。接下来,使用`GUI_sprintf_string`函数在坐标(1,200)处绘制一个字符串"ADD=",并使用`DISP_u32_num`函数显示一个32位的数值ADD。然后,使用`GUI_sprintf_string`函数在坐标(135,200)处绘制一个字符串"Status=",并使用`DISP_u8_num`函数显示一个8位的数值W25Q_ReadStatus()。最后,这些元素都会显示在LCD屏幕上,以达到人机交互的目的。
相关问题
typedef struct { float target_val;//Ä¿±êÖµ float actual_val;//ʵ¼ÊÖµ float err;//µ±Ç°Æ«²î float err_last;//ÉÏ´ÎÆ«²î float err_sum;//Îó²îÀÛ¼ÆÖµ float Kp,Ki,Kd;//±ÈÀý£¬»ý·Ö£¬Î¢·ÖϵÊý } tPid;
这是一个 PID 控制算法的数据结构体,包含了目标值、实际值、误差、上一次误差、误差累积、以及 PID 控制算法的三个参数 Kp、Ki、Kd。其中 Kp 是比例系数、Ki 是积分系数、Kd 是微分系数,它们用于控制 PID 算法的输出。通过不断地调整这些参数,可以使得 PID 控制算法的输出逐渐趋近于目标值,从而实现对某个系统(如温度、速度等)的精确控制。
#include "stm32f10x.h" #include "delay.h" static u8 fac_us=0;//usÑÓʱ±¶³ËÊý static u16 fac_ms=0;//msÑÓʱ±¶³ËÊý void DelayInit() { SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //Ñ¡ÔñÍⲿʱÖÓ HCLK/8 fac_us=SystemCoreClock/8000000; //ΪϵͳʱÖÓµÄ1/8 fac_ms=(u16)fac_us*1000;//·ÇucosÏÂ,´ú±íÿ¸ömsÐèÒªµÄsystickʱÖÓÊý } void DelayUs(unsigned long nus) { u32 temp; SysTick->LOAD=nus*fac_us; //ʱ¼ä¼ÓÔØ SysTick->VAL=0x00; //Çå¿Õ¼ÆÊýÆ÷ SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //¿ªÊ¼µ¹Êý do { temp=SysTick->CTRL; } while(temp&0x01&&!(temp&(1<<16)));//µÈ´ýʱ¼äµ½´ï SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //¹Ø±Õ¼ÆÊýÆ÷ SysTick->VAL =0X00; //Çå¿Õ¼ÆÊýÆ÷ } void DelayMs(unsigned int nms) { u32 temp; SysTick->LOAD=(u32)nms*fac_ms;//ʱ¼ä¼ÓÔØ(SysTick->LOADΪ24bit) SysTick->VAL =0x00; //Çå¿Õ¼ÆÊýÆ÷ SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //¿ªÊ¼µ¹Êý do { temp=SysTick->CTRL; } while(temp&0x01&&!(temp&(1<<16)));//µÈ´ýʱ¼äµ½´ï SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //¹Ø±Õ¼ÆÊýÆ÷ SysTick->VAL =0X00; //Çå¿Õ¼ÆÊýÆ÷ } void DelayS(unsigned int ns)//ÑÓʱÃë { unsigned char i; for(i=0;i<ns;i++) { DelayMs(1000); } }
这段代码是一个基于SysTick定时器的延时函数,可以实现微秒级、毫秒级和秒级的延时。其中,SysTick是STM32的一个系统定时器,用于提供一个固定的时钟来进行定时操作。
在代码中,DelayInit()函数用于初始化SysTick定时器,并计算出us和ms所需的SysTick时钟周期数。DelayUs()函数实现微秒级延时,DelayMs()函数实现毫秒级延时,DelayS()函数实现秒级延时。
需要注意的是,这些延时函数都是阻塞的,即在延时期间程序无法执行其他任务。在实际使用中,应根据具体情况选择合适的延时方式,避免阻塞影响程序的实时性能。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)