【蓝桥杯嵌入式】移植LCD程序+建立工程+LCD程序分析

工程建立

1 MCU型号选择:(如果没有Legacy Device Database 戳这里

在这里插入图片描述

2 文件夹格式:

在这里插入图片描述

3 **工程树:(所有文件可以在官方提供的LCD里可以找到)

ps:Define也可以直接抄里面的
STM32F10X_MD,USE_STDPERIPH_DRIVER,_1010MODE**
在这里插入图片描述

4 Option of target...选项中选中Debug标签将设置改为图中所示状态后点击。Settings

在这里插入图片描述

5 将设定调整到图片所示的状态后点击Flash Download

在这里插入图片描述

6 点击Add添加调试算法文件,这里已经添加。

在这里插入图片描述

7 没有算法文件戳这里。

在这里插入图片描述

8 然后就可以下载程序了。( ̄▽ ̄)

在这里插入图片描述


程序分析

/* 液晶格式:320*240(水平×竖直以下都是) 字体格式:16*24 行列 :20*9(排版后) */

扫描二维码关注公众号,回复: 9052754 查看本文章
//颜色
#define White          0xFFFF
#define Black          0x0000
#define Grey           0xF7DE
#define Blue           0x001F
#define Blue2          0x051F
#define Red            0xF800
#define Magenta        0xF81F
#define Green          0x07E0
#define Cyan           0x7FFF
#define Yellow         0xFFE0
//行数
#define Line0          0
#define Line1          24
#define Line2          48
#define Line3          72
#define Line4          96
#define Line5          120
#define Line6          144
#define Line7          168
#define Line8          192
#define Line9          216
//横竖
#define Horizontal     0x00
#define Vertical       0x01

SysTick_Config(SystemCoreClock/1000);	//设定每1ms触发一次滴答定时器中断
void Delay_Ms(u32 nTime);				//延时 n ms
void STM3210B_LCD_Init(void);			//LCD初始化
LCD_Clear(Blue);						//清除一切至全蓝色
LCD_SetBackColor(Blue);					//设定背景颜色
LCD_SetTextColor(White);				//设定字体颜色
void LCD_DrawLine(u8 Xpos, u16 Ypos, u16 Length, u8 Direction);
LCD_DrawLine(120,0,320,Horizontal);		//画直线
void LCD_DrawRect(u8 Xpos, u16 Ypos, u8 Height, u16 Width);
LCD_DrawRect(70,210,100,100);			//画矩形
void LCD_DrawCircle(u8 Xpos, u16 Ypos, u16 Radius);
LCD_DrawCircle(120,160,50);				//画圆
void LCD_DisplayStringLine(u8 Line, u8 *ptr);
LCD_DisplayStringLine(Line5 ,(unsigned char *)"12345678901234567890");
										//单行显示字符串
void LCD_ClearLine(u8 Line);			//清除某一行
void LCD_SetCursor(u8 Xpos, u16 Ypos);	//设置光标,对部分函数有影响

//先写这么多吧






ps:滴答定时器
延时函数(延时 n ms)
在这里插入图片描述
中断服务函数
在这里插入图片描述

SysTick_Config的参数,其实就是一个时钟次数,叫systick重装定时器的值。意思就是我要多少个1/fosc 时间后中断一下。
根据学过的物理中的时间与频率的公式:fosc=1/T T=1/fosc ,fosc为系统的频率。
如果STM32时钟频率为:72MHz,每次的时间为:T=1/72MHz。1秒钟为:1/(每次的时间)=1/(1/72MHz)=72 000 000次。1MHz是:1000 000。
反过来讲。SysTick_Config(72000)代表:72000*(1/72MHz)=1/1000=1(ms)。即定时为1ms。
如果需要1S则,可以通一设置一个全局变量,然后定初值得为1000,这样,每个systick中断一次,这个全局变量减1,减到0,即systick中断1000次,时间
为:1ms1000=1S。从而实现1S的定时。
因为SysTick定时器是:24位的,最大定时时间为:2的24次方
(1/72MHz)的时间,这里系统频率为:72MHz的情况下。

发布了88 篇原创文章 · 获赞 39 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43444989/article/details/103356199