起码能显示
This commit is contained in:
		
							parent
							
								
									f0627331fc
								
							
						
					
					
						commit
						9b5fc13c0c
					
				
							
								
								
									
										3
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
								
							| @ -1,5 +1,6 @@ | |||||||
| { | { | ||||||
|     "files.associations": { |     "files.associations": { | ||||||
|         "spi.h": "c" |         "spi.h": "c", | ||||||
|  |         "lcd.h": "c" | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @ -778,6 +778,30 @@ | |||||||
|       <RteFlg>0</RteFlg> |       <RteFlg>0</RteFlg> | ||||||
|       <bShared>0</bShared> |       <bShared>0</bShared> | ||||||
|     </File> |     </File> | ||||||
|  |     <File> | ||||||
|  |       <GroupNumber>6</GroupNumber> | ||||||
|  |       <FileNumber>43</FileNumber> | ||||||
|  |       <FileType>1</FileType> | ||||||
|  |       <tvExp>0</tvExp> | ||||||
|  |       <tvExpOptDlg>0</tvExpOptDlg> | ||||||
|  |       <bDave2>0</bDave2> | ||||||
|  |       <PathWithFileName>..\User\bsp\buzzer.c</PathWithFileName> | ||||||
|  |       <FilenameWithoutPath>buzzer.c</FilenameWithoutPath> | ||||||
|  |       <RteFlg>0</RteFlg> | ||||||
|  |       <bShared>0</bShared> | ||||||
|  |     </File> | ||||||
|  |     <File> | ||||||
|  |       <GroupNumber>6</GroupNumber> | ||||||
|  |       <FileNumber>44</FileNumber> | ||||||
|  |       <FileType>5</FileType> | ||||||
|  |       <tvExp>0</tvExp> | ||||||
|  |       <tvExpOptDlg>0</tvExpOptDlg> | ||||||
|  |       <bDave2>0</bDave2> | ||||||
|  |       <PathWithFileName>..\User\bsp\buzzer.h</PathWithFileName> | ||||||
|  |       <FilenameWithoutPath>buzzer.h</FilenameWithoutPath> | ||||||
|  |       <RteFlg>0</RteFlg> | ||||||
|  |       <bShared>0</bShared> | ||||||
|  |     </File> | ||||||
|   </Group> |   </Group> | ||||||
| 
 | 
 | ||||||
|   <Group> |   <Group> | ||||||
| @ -796,7 +820,7 @@ | |||||||
|     <RteFlg>0</RteFlg> |     <RteFlg>0</RteFlg> | ||||||
|     <File> |     <File> | ||||||
|       <GroupNumber>8</GroupNumber> |       <GroupNumber>8</GroupNumber> | ||||||
|       <FileNumber>43</FileNumber> |       <FileNumber>45</FileNumber> | ||||||
|       <FileType>1</FileType> |       <FileType>1</FileType> | ||||||
|       <tvExp>0</tvExp> |       <tvExp>0</tvExp> | ||||||
|       <tvExpOptDlg>0</tvExpOptDlg> |       <tvExpOptDlg>0</tvExpOptDlg> | ||||||
| @ -808,7 +832,7 @@ | |||||||
|     </File> |     </File> | ||||||
|     <File> |     <File> | ||||||
|       <GroupNumber>8</GroupNumber> |       <GroupNumber>8</GroupNumber> | ||||||
|       <FileNumber>44</FileNumber> |       <FileNumber>46</FileNumber> | ||||||
|       <FileType>1</FileType> |       <FileType>1</FileType> | ||||||
|       <tvExp>0</tvExp> |       <tvExp>0</tvExp> | ||||||
|       <tvExpOptDlg>0</tvExpOptDlg> |       <tvExpOptDlg>0</tvExpOptDlg> | ||||||
| @ -820,7 +844,7 @@ | |||||||
|     </File> |     </File> | ||||||
|     <File> |     <File> | ||||||
|       <GroupNumber>8</GroupNumber> |       <GroupNumber>8</GroupNumber> | ||||||
|       <FileNumber>45</FileNumber> |       <FileNumber>47</FileNumber> | ||||||
|       <FileType>1</FileType> |       <FileType>1</FileType> | ||||||
|       <tvExp>0</tvExp> |       <tvExp>0</tvExp> | ||||||
|       <tvExpOptDlg>0</tvExpOptDlg> |       <tvExpOptDlg>0</tvExpOptDlg> | ||||||
| @ -832,7 +856,7 @@ | |||||||
|     </File> |     </File> | ||||||
|     <File> |     <File> | ||||||
|       <GroupNumber>8</GroupNumber> |       <GroupNumber>8</GroupNumber> | ||||||
|       <FileNumber>46</FileNumber> |       <FileNumber>48</FileNumber> | ||||||
|       <FileType>1</FileType> |       <FileType>1</FileType> | ||||||
|       <tvExp>0</tvExp> |       <tvExp>0</tvExp> | ||||||
|       <tvExpOptDlg>0</tvExpOptDlg> |       <tvExpOptDlg>0</tvExpOptDlg> | ||||||
| @ -844,7 +868,7 @@ | |||||||
|     </File> |     </File> | ||||||
|     <File> |     <File> | ||||||
|       <GroupNumber>8</GroupNumber> |       <GroupNumber>8</GroupNumber> | ||||||
|       <FileNumber>47</FileNumber> |       <FileNumber>49</FileNumber> | ||||||
|       <FileType>1</FileType> |       <FileType>1</FileType> | ||||||
|       <tvExp>0</tvExp> |       <tvExp>0</tvExp> | ||||||
|       <tvExpOptDlg>0</tvExpOptDlg> |       <tvExpOptDlg>0</tvExpOptDlg> | ||||||
| @ -856,7 +880,7 @@ | |||||||
|     </File> |     </File> | ||||||
|     <File> |     <File> | ||||||
|       <GroupNumber>8</GroupNumber> |       <GroupNumber>8</GroupNumber> | ||||||
|       <FileNumber>48</FileNumber> |       <FileNumber>50</FileNumber> | ||||||
|       <FileType>1</FileType> |       <FileType>1</FileType> | ||||||
|       <tvExp>0</tvExp> |       <tvExp>0</tvExp> | ||||||
|       <tvExpOptDlg>0</tvExpOptDlg> |       <tvExpOptDlg>0</tvExpOptDlg> | ||||||
| @ -868,7 +892,7 @@ | |||||||
|     </File> |     </File> | ||||||
|     <File> |     <File> | ||||||
|       <GroupNumber>8</GroupNumber> |       <GroupNumber>8</GroupNumber> | ||||||
|       <FileNumber>49</FileNumber> |       <FileNumber>51</FileNumber> | ||||||
|       <FileType>5</FileType> |       <FileType>5</FileType> | ||||||
|       <tvExp>0</tvExp> |       <tvExp>0</tvExp> | ||||||
|       <tvExpOptDlg>0</tvExpOptDlg> |       <tvExpOptDlg>0</tvExpOptDlg> | ||||||
| @ -888,7 +912,7 @@ | |||||||
|     <RteFlg>0</RteFlg> |     <RteFlg>0</RteFlg> | ||||||
|     <File> |     <File> | ||||||
|       <GroupNumber>9</GroupNumber> |       <GroupNumber>9</GroupNumber> | ||||||
|       <FileNumber>50</FileNumber> |       <FileNumber>52</FileNumber> | ||||||
|       <FileType>1</FileType> |       <FileType>1</FileType> | ||||||
|       <tvExp>0</tvExp> |       <tvExp>0</tvExp> | ||||||
|       <tvExpOptDlg>0</tvExpOptDlg> |       <tvExpOptDlg>0</tvExpOptDlg> | ||||||
| @ -900,7 +924,7 @@ | |||||||
|     </File> |     </File> | ||||||
|     <File> |     <File> | ||||||
|       <GroupNumber>9</GroupNumber> |       <GroupNumber>9</GroupNumber> | ||||||
|       <FileNumber>51</FileNumber> |       <FileNumber>53</FileNumber> | ||||||
|       <FileType>5</FileType> |       <FileType>5</FileType> | ||||||
|       <tvExp>0</tvExp> |       <tvExp>0</tvExp> | ||||||
|       <tvExpOptDlg>0</tvExpOptDlg> |       <tvExpOptDlg>0</tvExpOptDlg> | ||||||
| @ -920,7 +944,7 @@ | |||||||
|     <RteFlg>0</RteFlg> |     <RteFlg>0</RteFlg> | ||||||
|     <File> |     <File> | ||||||
|       <GroupNumber>10</GroupNumber> |       <GroupNumber>10</GroupNumber> | ||||||
|       <FileNumber>52</FileNumber> |       <FileNumber>54</FileNumber> | ||||||
|       <FileType>1</FileType> |       <FileType>1</FileType> | ||||||
|       <tvExp>0</tvExp> |       <tvExp>0</tvExp> | ||||||
|       <tvExpOptDlg>0</tvExpOptDlg> |       <tvExpOptDlg>0</tvExpOptDlg> | ||||||
| @ -932,7 +956,7 @@ | |||||||
|     </File> |     </File> | ||||||
|     <File> |     <File> | ||||||
|       <GroupNumber>10</GroupNumber> |       <GroupNumber>10</GroupNumber> | ||||||
|       <FileNumber>53</FileNumber> |       <FileNumber>55</FileNumber> | ||||||
|       <FileType>5</FileType> |       <FileType>5</FileType> | ||||||
|       <tvExp>0</tvExp> |       <tvExp>0</tvExp> | ||||||
|       <tvExpOptDlg>0</tvExpOptDlg> |       <tvExpOptDlg>0</tvExpOptDlg> | ||||||
| @ -944,7 +968,7 @@ | |||||||
|     </File> |     </File> | ||||||
|     <File> |     <File> | ||||||
|       <GroupNumber>10</GroupNumber> |       <GroupNumber>10</GroupNumber> | ||||||
|       <FileNumber>54</FileNumber> |       <FileNumber>56</FileNumber> | ||||||
|       <FileType>1</FileType> |       <FileType>1</FileType> | ||||||
|       <tvExp>0</tvExp> |       <tvExp>0</tvExp> | ||||||
|       <tvExpOptDlg>0</tvExpOptDlg> |       <tvExpOptDlg>0</tvExpOptDlg> | ||||||
| @ -956,7 +980,7 @@ | |||||||
|     </File> |     </File> | ||||||
|     <File> |     <File> | ||||||
|       <GroupNumber>10</GroupNumber> |       <GroupNumber>10</GroupNumber> | ||||||
|       <FileNumber>55</FileNumber> |       <FileNumber>57</FileNumber> | ||||||
|       <FileType>5</FileType> |       <FileType>5</FileType> | ||||||
|       <tvExp>0</tvExp> |       <tvExp>0</tvExp> | ||||||
|       <tvExpOptDlg>0</tvExpOptDlg> |       <tvExpOptDlg>0</tvExpOptDlg> | ||||||
| @ -968,7 +992,7 @@ | |||||||
|     </File> |     </File> | ||||||
|     <File> |     <File> | ||||||
|       <GroupNumber>10</GroupNumber> |       <GroupNumber>10</GroupNumber> | ||||||
|       <FileNumber>56</FileNumber> |       <FileNumber>58</FileNumber> | ||||||
|       <FileType>5</FileType> |       <FileType>5</FileType> | ||||||
|       <tvExp>0</tvExp> |       <tvExp>0</tvExp> | ||||||
|       <tvExpOptDlg>0</tvExpOptDlg> |       <tvExpOptDlg>0</tvExpOptDlg> | ||||||
| @ -978,6 +1002,30 @@ | |||||||
|       <RteFlg>0</RteFlg> |       <RteFlg>0</RteFlg> | ||||||
|       <bShared>0</bShared> |       <bShared>0</bShared> | ||||||
|     </File> |     </File> | ||||||
|  |     <File> | ||||||
|  |       <GroupNumber>10</GroupNumber> | ||||||
|  |       <FileNumber>59</FileNumber> | ||||||
|  |       <FileType>1</FileType> | ||||||
|  |       <tvExp>0</tvExp> | ||||||
|  |       <tvExpOptDlg>0</tvExpOptDlg> | ||||||
|  |       <bDave2>0</bDave2> | ||||||
|  |       <PathWithFileName>..\User\device\lcd.c</PathWithFileName> | ||||||
|  |       <FilenameWithoutPath>lcd.c</FilenameWithoutPath> | ||||||
|  |       <RteFlg>0</RteFlg> | ||||||
|  |       <bShared>0</bShared> | ||||||
|  |     </File> | ||||||
|  |     <File> | ||||||
|  |       <GroupNumber>10</GroupNumber> | ||||||
|  |       <FileNumber>60</FileNumber> | ||||||
|  |       <FileType>5</FileType> | ||||||
|  |       <tvExp>0</tvExp> | ||||||
|  |       <tvExpOptDlg>0</tvExpOptDlg> | ||||||
|  |       <bDave2>0</bDave2> | ||||||
|  |       <PathWithFileName>..\User\device\lcd.h</PathWithFileName> | ||||||
|  |       <FilenameWithoutPath>lcd.h</FilenameWithoutPath> | ||||||
|  |       <RteFlg>0</RteFlg> | ||||||
|  |       <bShared>0</bShared> | ||||||
|  |     </File> | ||||||
|   </Group> |   </Group> | ||||||
| 
 | 
 | ||||||
|   <Group> |   <Group> | ||||||
|  | |||||||
| @ -1452,6 +1452,16 @@ | |||||||
|               <FileType>5</FileType> |               <FileType>5</FileType> | ||||||
|               <FilePath>..\User\bsp\spi.h</FilePath> |               <FilePath>..\User\bsp\spi.h</FilePath> | ||||||
|             </File> |             </File> | ||||||
|  |             <File> | ||||||
|  |               <FileName>buzzer.c</FileName> | ||||||
|  |               <FileType>1</FileType> | ||||||
|  |               <FilePath>..\User\bsp\buzzer.c</FilePath> | ||||||
|  |             </File> | ||||||
|  |             <File> | ||||||
|  |               <FileName>buzzer.h</FileName> | ||||||
|  |               <FileType>5</FileType> | ||||||
|  |               <FilePath>..\User\bsp\buzzer.h</FilePath> | ||||||
|  |             </File> | ||||||
|           </Files> |           </Files> | ||||||
|         </Group> |         </Group> | ||||||
|         <Group> |         <Group> | ||||||
| @ -1540,6 +1550,16 @@ | |||||||
|               <FileType>5</FileType> |               <FileType>5</FileType> | ||||||
|               <FilePath>..\User\device\device.h</FilePath> |               <FilePath>..\User\device\device.h</FilePath> | ||||||
|             </File> |             </File> | ||||||
|  |             <File> | ||||||
|  |               <FileName>lcd.c</FileName> | ||||||
|  |               <FileType>1</FileType> | ||||||
|  |               <FilePath>..\User\device\lcd.c</FilePath> | ||||||
|  |             </File> | ||||||
|  |             <File> | ||||||
|  |               <FileName>lcd.h</FileName> | ||||||
|  |               <FileType>5</FileType> | ||||||
|  |               <FilePath>..\User\device\lcd.h</FilePath> | ||||||
|  |             </File> | ||||||
|           </Files> |           </Files> | ||||||
|         </Group> |         </Group> | ||||||
|         <Group> |         <Group> | ||||||
|  | |||||||
										
											Binary file not shown.
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										36
									
								
								User/bsp/buzzer.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								User/bsp/buzzer.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,36 @@ | |||||||
|  | /* Includes ----------------------------------------------------------------- */ | ||||||
|  | #include "bsp\buzzer.h" | ||||||
|  | 
 | ||||||
|  | #include <main.h> | ||||||
|  | #include <tim.h> | ||||||
|  | 
 | ||||||
|  | /* Private define ----------------------------------------------------------- */ | ||||||
|  | /* Private macro ------------------------------------------------------------ */ | ||||||
|  | /* Private typedef ---------------------------------------------------------- */ | ||||||
|  | /* Private variables -------------------------------------------------------- */ | ||||||
|  | /* Private function  -------------------------------------------------------- */ | ||||||
|  | /* Exported functions ------------------------------------------------------- */ | ||||||
|  | int8_t BSP_Buzzer_Start(void) { | ||||||
|  |   if (HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_4) == HAL_OK) return BSP_OK; | ||||||
|  |   return BSP_ERR; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief 设置蜂鸣器频率和占空比 | ||||||
|  |  * @param freq  | ||||||
|  |  * @param duty_cycle  | ||||||
|  |  * @return  | ||||||
|  |  */ | ||||||
|  | int8_t BSP_Buzzer_Set(float freq, float duty_cycle) { | ||||||
|  |   uint16_t pulse = (uint16_t)(duty_cycle * (float)UINT16_MAX); | ||||||
|  |   __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_4, pulse); | ||||||
|  | 
 | ||||||
|  |   pulse = (uint16_t)freq; | ||||||
|  |   __HAL_TIM_PRESCALER(&htim3, pulse); | ||||||
|  |   return BSP_OK; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | int8_t BSP_Buzzer_Stop(void) {  | ||||||
|  |   if (HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_4) == HAL_OK) return BSP_OK; | ||||||
|  |   return BSP_ERR; | ||||||
|  | } | ||||||
							
								
								
									
										22
									
								
								User/bsp/buzzer.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								User/bsp/buzzer.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | |||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | #ifdef __cplusplus | ||||||
|  | extern "C" { | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* Includes ----------------------------------------------------------------- */ | ||||||
|  | #include <stdint.h> | ||||||
|  | 
 | ||||||
|  | #include "bsp/bsp.h" | ||||||
|  | 
 | ||||||
|  | /* Exported constants ------------------------------------------------------- */ | ||||||
|  | /* Exported macro ----------------------------------------------------------- */ | ||||||
|  | /* Exported types ----------------------------------------------------------- */ | ||||||
|  | /* Exported functions prototypes -------------------------------------------- */ | ||||||
|  | int8_t BSP_Buzzer_Start(void); | ||||||
|  | int8_t BSP_Buzzer_Set(float freq, float duty_cycle); | ||||||
|  | int8_t BSP_Buzzer_Stop(void); | ||||||
|  | 
 | ||||||
|  | #ifdef __cplusplus | ||||||
|  | } | ||||||
|  | #endif | ||||||
| @ -14,7 +14,7 @@ | |||||||
| 
 | 
 | ||||||
| // /* SPI实体枚举,与设备对应 */
 | // /* SPI实体枚举,与设备对应 */
 | ||||||
| // typedef enum {
 | // typedef enum {
 | ||||||
| //   BSP_SPI_ADC,
 | //   BSP_SPI_LCD,
 | ||||||
| // } BSP_SPI_t;
 | // } BSP_SPI_t;
 | ||||||
| 
 | 
 | ||||||
| // /* Exported functions prototypes -------------------------------------------- */
 | // /* Exported functions prototypes -------------------------------------------- */
 | ||||||
|  | |||||||
							
								
								
									
										169
									
								
								User/device/lcd.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										169
									
								
								User/device/lcd.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,169 @@ | |||||||
|  | #include "lcd.h" | ||||||
|  | #include "lcd_font.h" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | // 写命令
 | ||||||
|  | static void LCD_WriteCommand(uint8_t cmd) { | ||||||
|  |     LCD_DC_LOW(); | ||||||
|  |     LCD_CS_LOW(); | ||||||
|  |     HAL_SPI_Transmit(&hspi1, &cmd, 1, HAL_MAX_DELAY); | ||||||
|  |     LCD_CS_HIGH(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 写数据
 | ||||||
|  | static void LCD_WriteData(uint8_t data) { | ||||||
|  |     LCD_DC_HIGH(); | ||||||
|  |     LCD_CS_LOW(); | ||||||
|  |     HAL_SPI_Transmit(&hspi1, &data, 1, HAL_MAX_DELAY); | ||||||
|  |     LCD_CS_HIGH(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 写16位数据
 | ||||||
|  | static void LCD_WriteData16(uint16_t data) { | ||||||
|  |     uint8_t buf[2] = {data >> 8, data & 0xFF}; | ||||||
|  |     LCD_DC_HIGH(); | ||||||
|  |     LCD_CS_LOW(); | ||||||
|  |     HAL_SPI_Transmit(&hspi1, buf, 2, HAL_MAX_DELAY); | ||||||
|  |     LCD_CS_HIGH(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 初始化LCD
 | ||||||
|  | void LCD_Init(void) { | ||||||
|  |     // 复位屏幕
 | ||||||
|  |     LCD_RST_LOW(); | ||||||
|  |     HAL_Delay(10); | ||||||
|  |     LCD_RST_HIGH(); | ||||||
|  |     HAL_Delay(10); | ||||||
|  | 
 | ||||||
|  |     // 初始化命令序列(以ST7789为例)
 | ||||||
|  |     LCD_WriteCommand(0x36); // Memory Data Access Control
 | ||||||
|  |     LCD_WriteData(0xC0); // RGB Color Order
 | ||||||
|  | 
 | ||||||
|  |     LCD_WriteCommand(0x3A); // Interface Pixel Format
 | ||||||
|  |     LCD_WriteData(0x05);    // 16-bit/pixel
 | ||||||
|  | 
 | ||||||
|  |     LCD_WriteCommand(0xB2); // Porch Setting
 | ||||||
|  |     LCD_WriteData(0x0C); | ||||||
|  |     LCD_WriteData(0x0C); | ||||||
|  |     LCD_WriteData(0x00); | ||||||
|  |     LCD_WriteData(0x33); | ||||||
|  |     LCD_WriteData(0x33); | ||||||
|  | 
 | ||||||
|  |     LCD_WriteCommand(0xB7); // Gate Control
 | ||||||
|  |     LCD_WriteData(0x35); | ||||||
|  | 
 | ||||||
|  |     LCD_WriteCommand(0xBB); // VCOM Setting
 | ||||||
|  |     LCD_WriteData(0x19); | ||||||
|  | 
 | ||||||
|  |     LCD_WriteCommand(0xC0); // LCM Control
 | ||||||
|  |     LCD_WriteData(0x2C); | ||||||
|  | 
 | ||||||
|  |     LCD_WriteCommand(0xC2); // VDV and VRH Command Enable
 | ||||||
|  |     LCD_WriteData(0x01); | ||||||
|  |     LCD_WriteCommand(0xC3); // VRH Set
 | ||||||
|  |     LCD_WriteData(0x12); | ||||||
|  |     LCD_WriteCommand(0xC4); // VDV Set
 | ||||||
|  |     LCD_WriteData(0x20); | ||||||
|  | 
 | ||||||
|  |     LCD_WriteCommand(0xC6); // Frame Rate Control
 | ||||||
|  |     LCD_WriteData(0x0F); | ||||||
|  | 
 | ||||||
|  |     LCD_WriteCommand(0xD0); // Power Control 1
 | ||||||
|  |     LCD_WriteData(0xA4); | ||||||
|  |     LCD_WriteData(0xA1); | ||||||
|  | 
 | ||||||
|  |     LCD_WriteCommand(0xE0); // Positive Voltage Gamma Control
 | ||||||
|  |     LCD_WriteData(0xD0); | ||||||
|  |     LCD_WriteData(0x04); | ||||||
|  |     LCD_WriteData(0x0D); | ||||||
|  |     LCD_WriteData(0x11); | ||||||
|  |     LCD_WriteData(0x13); | ||||||
|  |     LCD_WriteData(0x2B); | ||||||
|  |     LCD_WriteData(0x3F); | ||||||
|  |     LCD_WriteData(0x54); | ||||||
|  |     LCD_WriteData(0x4C); | ||||||
|  |     LCD_WriteData(0x18); | ||||||
|  |     LCD_WriteData(0x0D); | ||||||
|  |     LCD_WriteData(0x0B); | ||||||
|  |     LCD_WriteData(0x1F); | ||||||
|  |     LCD_WriteData(0x23); | ||||||
|  | 
 | ||||||
|  |     LCD_WriteCommand(0xE1); // Negative Voltage Gamma Control
 | ||||||
|  |     LCD_WriteData(0xD0); | ||||||
|  |     LCD_WriteData(0x04); | ||||||
|  |     LCD_WriteData(0x0C); | ||||||
|  |     LCD_WriteData(0x11); | ||||||
|  |     LCD_WriteData(0x13); | ||||||
|  |     LCD_WriteData(0x2C); | ||||||
|  |     LCD_WriteData(0x3F); | ||||||
|  |     LCD_WriteData(0x44); | ||||||
|  |     LCD_WriteData(0x51); | ||||||
|  |     LCD_WriteData(0x2F); | ||||||
|  |     LCD_WriteData(0x1F); | ||||||
|  |     LCD_WriteData(0x1F); | ||||||
|  |     LCD_WriteData(0x20); | ||||||
|  |     LCD_WriteData(0x23); | ||||||
|  | 
 | ||||||
|  |     LCD_WriteCommand(0x21); // Inversion On
 | ||||||
|  |     LCD_WriteCommand(0x11); // Sleep Out
 | ||||||
|  |     HAL_Delay(120); | ||||||
|  |     LCD_WriteCommand(0x29); // Display On
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 清屏
 | ||||||
|  | void LCD_Clear(uint16_t color) { | ||||||
|  |     LCD_WriteCommand(0x2A); // Column Address Set
 | ||||||
|  |     LCD_WriteData16(X_OFFSET);    // 起始列地址
 | ||||||
|  |     LCD_WriteData16(X_OFFSET + LCD_WIDTH - 1); // 结束列地址
 | ||||||
|  | 
 | ||||||
|  |     LCD_WriteCommand(0x2B); // Row Address Set
 | ||||||
|  |     LCD_WriteData16(Y_OFFSET);    // 起始行地址
 | ||||||
|  |     LCD_WriteData16(Y_OFFSET + LCD_HEIGHT - 1); // 结束行地址
 | ||||||
|  | 
 | ||||||
|  |     LCD_WriteCommand(0x2C); // Memory Write
 | ||||||
|  |     for (uint32_t i = 0; i < LCD_WIDTH * LCD_HEIGHT; i++) { | ||||||
|  |         LCD_WriteData16(color); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 绘制单个像素
 | ||||||
|  | void LCD_DrawPixel(uint16_t x, uint16_t y, uint16_t color) { | ||||||
|  |     if (x >= LCD_WIDTH || y >= LCD_HEIGHT) return; // 超出屏幕范围则返回
 | ||||||
|  | 
 | ||||||
|  |     LCD_WriteCommand(0x2A); // 设置列地址
 | ||||||
|  |     LCD_WriteData16(X_OFFSET + x); | ||||||
|  |     LCD_WriteData16(X_OFFSET + x); | ||||||
|  | 
 | ||||||
|  |     LCD_WriteCommand(0x2B); // 设置行地址
 | ||||||
|  |     LCD_WriteData16(Y_OFFSET + y); | ||||||
|  |     LCD_WriteData16(Y_OFFSET + y); | ||||||
|  | 
 | ||||||
|  |     LCD_WriteCommand(0x2C); // 写入内存
 | ||||||
|  |     LCD_WriteData16(color); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 在指定位置显示一个字符
 | ||||||
|  | void LCD_DrawChar(uint16_t x, uint16_t y, char ch, uint16_t color, uint16_t bgColor) { | ||||||
|  |     if (ch < 32 || ch > 126) return; // 字符范围检查 (ASCII 32-126)
 | ||||||
|  | 
 | ||||||
|  |     const uint8_t *charData = ascii_1206[ch - 32]; // 获取字符点阵数据
 | ||||||
|  |     for (uint8_t i = 0; i < FONT_HEIGHT; i++) { // 遍历字符的高度
 | ||||||
|  |         uint8_t line = charData[i]; // 获取字符的每一行数据
 | ||||||
|  |         for (uint8_t j = 0; j < FONT_WIDTH; j++) { // 遍历字符的宽度
 | ||||||
|  |             if (line & (1 << j)) { // 判断当前像素是否为1
 | ||||||
|  |                 LCD_DrawPixel(x + j, y + i, color); // 绘制前景色
 | ||||||
|  |             } else { | ||||||
|  |                 LCD_DrawPixel(x + j, y + i, bgColor); // 绘制背景色
 | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 在指定位置显示字符串
 | ||||||
|  | void LCD_DrawString(uint16_t x, uint16_t y, const char *str, uint16_t color, uint16_t bgColor) { | ||||||
|  |     while (*str) { | ||||||
|  |         LCD_DrawChar(x, y, *str, color, bgColor); // 显示单个字符
 | ||||||
|  |         x += FONT_WIDTH; // 移动到下一个字符位置
 | ||||||
|  |         str++; | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										36
									
								
								User/device/lcd.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								User/device/lcd.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,36 @@ | |||||||
|  | #ifndef __LCD_H | ||||||
|  | #define __LCD_H | ||||||
|  | 
 | ||||||
|  | #include "spi.h" | ||||||
|  | #include "gpio.h" | ||||||
|  | 
 | ||||||
|  | // 屏幕分辨率
 | ||||||
|  | #define LCD_WIDTH  135 | ||||||
|  | #define LCD_HEIGHT 240 | ||||||
|  | 
 | ||||||
|  | #define X_OFFSET 52 | ||||||
|  | #define Y_OFFSET 40 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | // 常用颜色定义
 | ||||||
|  | #define BLACK   0x0000 | ||||||
|  | #define WHITE   0xFFFF | ||||||
|  | #define RED     0xF800 | ||||||
|  | #define GREEN   0x07E0 | ||||||
|  | #define BLUE    0x001F | ||||||
|  | 
 | ||||||
|  | // 控制引脚
 | ||||||
|  | #define LCD_CS_LOW()    HAL_GPIO_WritePin(TFT_CS_GPIO_Port, TFT_CS_Pin, GPIO_PIN_RESET) | ||||||
|  | #define LCD_CS_HIGH()   HAL_GPIO_WritePin(TFT_CS_GPIO_Port, TFT_CS_Pin, GPIO_PIN_SET) | ||||||
|  | #define LCD_DC_LOW()    HAL_GPIO_WritePin(TFT_RS_GPIO_Port, TFT_RS_Pin, GPIO_PIN_RESET) | ||||||
|  | #define LCD_DC_HIGH()   HAL_GPIO_WritePin(TFT_RS_GPIO_Port, TFT_RS_Pin, GPIO_PIN_SET) | ||||||
|  | #define LCD_RST_LOW()   HAL_GPIO_WritePin(TFT_RES_GPIO_Port, TFT_RES_Pin, GPIO_PIN_RESET) | ||||||
|  | #define LCD_RST_HIGH()  HAL_GPIO_WritePin(TFT_RES_GPIO_Port, TFT_RES_Pin, GPIO_PIN_SET) | ||||||
|  | 
 | ||||||
|  | // 函数声明
 | ||||||
|  | void LCD_Init(void); | ||||||
|  | void LCD_Clear(uint16_t color); | ||||||
|  | void LCD_DrawPixel(uint16_t x, uint16_t y, uint16_t color); | ||||||
|  | void LCD_DrawChar(uint16_t x, uint16_t y, char ch, uint16_t color, uint16_t bgColor); | ||||||
|  | void LCD_DrawString(uint16_t x, uint16_t y, const char *str, uint16_t color, uint16_t bgColor); | ||||||
|  | #endif // __LCD_H
 | ||||||
							
								
								
									
										104
									
								
								User/device/lcd_font.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										104
									
								
								User/device/lcd_font.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,104 @@ | |||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | #include <stdint.h> | ||||||
|  | 
 | ||||||
|  | #define FONT_WIDTH  6 | ||||||
|  | #define FONT_HEIGHT 12 | ||||||
|  | 
 | ||||||
|  | const unsigned char ascii_1206[][12]={ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/ | ||||||
|  |     {0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x00,0x00,0x04,0x00,0x00},/*"!",1*/ | ||||||
|  |     {0x14,0x14,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*""",2*/ | ||||||
|  |     {0x00,0x00,0x0A,0x0A,0x1F,0x0A,0x0A,0x1F,0x0A,0x0A,0x00,0x00},/*"#",3*/ | ||||||
|  |     {0x00,0x04,0x0E,0x15,0x05,0x06,0x0C,0x14,0x15,0x0E,0x04,0x00},/*"$",4*/ | ||||||
|  |     {0x00,0x00,0x12,0x15,0x0D,0x15,0x2E,0x2C,0x2A,0x12,0x00,0x00},/*"%",5*/ | ||||||
|  |     {0x00,0x00,0x04,0x0A,0x0A,0x36,0x15,0x15,0x29,0x16,0x00,0x00},/*"&",6*/ | ||||||
|  |     {0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",7*/ | ||||||
|  |     {0x10,0x08,0x08,0x04,0x04,0x04,0x04,0x04,0x08,0x08,0x10,0x00},/*"(",8*/ | ||||||
|  |     {0x02,0x04,0x04,0x08,0x08,0x08,0x08,0x08,0x04,0x04,0x02,0x00},/*")",9*/ | ||||||
|  |     {0x00,0x00,0x00,0x04,0x15,0x0E,0x0E,0x15,0x04,0x00,0x00,0x00},/*"*",10*/ | ||||||
|  |     {0x00,0x00,0x00,0x08,0x08,0x3E,0x08,0x08,0x00,0x00,0x00,0x00},/*"+",11*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x01,0x00},/*",",12*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00},/*"-",13*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00},/*".",14*/ | ||||||
|  |     {0x00,0x20,0x10,0x10,0x08,0x08,0x04,0x04,0x02,0x02,0x01,0x00},/*"/",15*/ | ||||||
|  |     {0x00,0x00,0x0E,0x11,0x11,0x11,0x11,0x11,0x11,0x0E,0x00,0x00},/*"0",16*/ | ||||||
|  |     {0x00,0x00,0x04,0x06,0x04,0x04,0x04,0x04,0x04,0x0E,0x00,0x00},/*"1",17*/ | ||||||
|  |     {0x00,0x00,0x0E,0x11,0x11,0x08,0x04,0x02,0x01,0x1F,0x00,0x00},/*"2",18*/ | ||||||
|  |     {0x00,0x00,0x0E,0x11,0x10,0x0C,0x10,0x10,0x11,0x0E,0x00,0x00},/*"3",19*/ | ||||||
|  |     {0x00,0x00,0x08,0x0C,0x0C,0x0A,0x09,0x1F,0x08,0x1C,0x00,0x00},/*"4",20*/ | ||||||
|  |     {0x00,0x00,0x1F,0x01,0x01,0x0F,0x11,0x10,0x11,0x0E,0x00,0x00},/*"5",21*/ | ||||||
|  |     {0x00,0x00,0x0C,0x12,0x01,0x0D,0x13,0x11,0x11,0x0E,0x00,0x00},/*"6",22*/ | ||||||
|  |     {0x00,0x00,0x1E,0x10,0x08,0x08,0x04,0x04,0x04,0x04,0x00,0x00},/*"7",23*/ | ||||||
|  |     {0x00,0x00,0x0E,0x11,0x11,0x0E,0x11,0x11,0x11,0x0E,0x00,0x00},/*"8",24*/ | ||||||
|  |     {0x00,0x00,0x0E,0x11,0x11,0x19,0x16,0x10,0x09,0x06,0x00,0x00},/*"9",25*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x04,0x00,0x00},/*":",26*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x04,0x00},/*";",27*/ | ||||||
|  |     {0x00,0x00,0x10,0x08,0x04,0x02,0x02,0x04,0x08,0x10,0x00,0x00},/*"<",28*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x3F,0x00,0x3F,0x00,0x00,0x00,0x00,0x00},/*"=",29*/ | ||||||
|  |     {0x00,0x00,0x02,0x04,0x08,0x10,0x10,0x08,0x04,0x02,0x00,0x00},/*">",30*/ | ||||||
|  |     {0x00,0x00,0x0E,0x11,0x11,0x08,0x04,0x04,0x00,0x04,0x00,0x00},/*"?",31*/ | ||||||
|  |     {0x00,0x00,0x1C,0x22,0x29,0x2D,0x2D,0x1D,0x22,0x1C,0x00,0x00},/*"@",32*/ | ||||||
|  |     {0x00,0x00,0x04,0x04,0x0C,0x0A,0x0A,0x1E,0x12,0x33,0x00,0x00},/*"A",33*/ | ||||||
|  |     {0x00,0x00,0x0F,0x12,0x12,0x0E,0x12,0x12,0x12,0x0F,0x00,0x00},/*"B",34*/ | ||||||
|  |     {0x00,0x00,0x1E,0x11,0x01,0x01,0x01,0x01,0x11,0x0E,0x00,0x00},/*"C",35*/ | ||||||
|  |     {0x00,0x00,0x0F,0x12,0x12,0x12,0x12,0x12,0x12,0x0F,0x00,0x00},/*"D",36*/ | ||||||
|  |     {0x00,0x00,0x1F,0x12,0x0A,0x0E,0x0A,0x02,0x12,0x1F,0x00,0x00},/*"E",37*/ | ||||||
|  |     {0x00,0x00,0x1F,0x12,0x0A,0x0E,0x0A,0x02,0x02,0x07,0x00,0x00},/*"F",38*/ | ||||||
|  |     {0x00,0x00,0x1C,0x12,0x01,0x01,0x39,0x11,0x12,0x0C,0x00,0x00},/*"G",39*/ | ||||||
|  |     {0x00,0x00,0x33,0x12,0x12,0x1E,0x12,0x12,0x12,0x33,0x00,0x00},/*"H",40*/ | ||||||
|  |     {0x00,0x00,0x1F,0x04,0x04,0x04,0x04,0x04,0x04,0x1F,0x00,0x00},/*"I",41*/ | ||||||
|  |     {0x00,0x00,0x3E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x09,0x07},/*"J",42*/ | ||||||
|  |     {0x00,0x00,0x37,0x12,0x0A,0x06,0x0A,0x12,0x12,0x37,0x00,0x00},/*"K",43*/ | ||||||
|  |     {0x00,0x00,0x07,0x02,0x02,0x02,0x02,0x02,0x22,0x3F,0x00,0x00},/*"L",44*/ | ||||||
|  |     {0x00,0x00,0x3B,0x1B,0x1B,0x1B,0x15,0x15,0x15,0x35,0x00,0x00},/*"M",45*/ | ||||||
|  |     {0x00,0x00,0x3B,0x12,0x16,0x16,0x1A,0x1A,0x12,0x17,0x00,0x00},/*"N",46*/ | ||||||
|  |     {0x00,0x00,0x0E,0x11,0x11,0x11,0x11,0x11,0x11,0x0E,0x00,0x00},/*"O",47*/ | ||||||
|  |     {0x00,0x00,0x0F,0x12,0x12,0x0E,0x02,0x02,0x02,0x07,0x00,0x00},/*"P",48*/ | ||||||
|  |     {0x00,0x00,0x0E,0x11,0x11,0x11,0x11,0x17,0x19,0x0E,0x18,0x00},/*"Q",49*/ | ||||||
|  |     {0x00,0x00,0x0F,0x12,0x12,0x0E,0x0A,0x12,0x12,0x37,0x00,0x00},/*"R",50*/ | ||||||
|  |     {0x00,0x00,0x1E,0x11,0x01,0x06,0x08,0x10,0x11,0x0F,0x00,0x00},/*"S",51*/ | ||||||
|  |     {0x00,0x00,0x1F,0x15,0x04,0x04,0x04,0x04,0x04,0x0E,0x00,0x00},/*"T",52*/ | ||||||
|  |     {0x00,0x00,0x33,0x12,0x12,0x12,0x12,0x12,0x12,0x0C,0x00,0x00},/*"U",53*/ | ||||||
|  |     {0x00,0x00,0x33,0x12,0x12,0x0A,0x0A,0x0C,0x04,0x04,0x00,0x00},/*"V",54*/ | ||||||
|  |     {0x00,0x00,0x15,0x15,0x15,0x15,0x0E,0x0A,0x0A,0x0A,0x00,0x00},/*"W",55*/ | ||||||
|  |     {0x00,0x00,0x1B,0x0A,0x0A,0x04,0x04,0x0A,0x0A,0x1B,0x00,0x00},/*"X",56*/ | ||||||
|  |     {0x00,0x00,0x1B,0x0A,0x0A,0x0A,0x04,0x04,0x04,0x0E,0x00,0x00},/*"Y",57*/ | ||||||
|  |     {0x00,0x00,0x1F,0x09,0x08,0x04,0x04,0x02,0x12,0x1F,0x00,0x00},/*"Z",58*/ | ||||||
|  |     {0x1C,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x1C,0x00},/*"[",59*/ | ||||||
|  |     {0x00,0x02,0x02,0x04,0x04,0x04,0x08,0x08,0x08,0x10,0x10,0x00},/*"\",60*/ | ||||||
|  |     {0x0E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x0E,0x00},/*"]",61*/ | ||||||
|  |     {0x04,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"^",62*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F},/*"_",63*/ | ||||||
|  |     {0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"`",64*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x00,0x0C,0x12,0x1C,0x12,0x3C,0x00,0x00},/*"a",65*/ | ||||||
|  |     {0x00,0x03,0x02,0x02,0x02,0x0E,0x12,0x12,0x12,0x0E,0x00,0x00},/*"b",66*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x00,0x1C,0x12,0x02,0x12,0x0C,0x00,0x00},/*"c",67*/ | ||||||
|  |     {0x00,0x18,0x10,0x10,0x10,0x1C,0x12,0x12,0x12,0x3C,0x00,0x00},/*"d",68*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x00,0x0C,0x12,0x1E,0x02,0x1C,0x00,0x00},/*"e",69*/ | ||||||
|  |     {0x00,0x18,0x24,0x04,0x04,0x1E,0x04,0x04,0x04,0x1E,0x00,0x00},/*"f",70*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x00,0x3C,0x12,0x0C,0x02,0x1C,0x22,0x1C},/*"g",71*/ | ||||||
|  |     {0x00,0x03,0x02,0x02,0x02,0x0E,0x12,0x12,0x12,0x37,0x00,0x00},/*"h",72*/ | ||||||
|  |     {0x00,0x04,0x04,0x00,0x00,0x06,0x04,0x04,0x04,0x0E,0x00,0x00},/*"i",73*/ | ||||||
|  |     {0x00,0x08,0x08,0x00,0x00,0x0C,0x08,0x08,0x08,0x08,0x08,0x07},/*"j",74*/ | ||||||
|  |     {0x00,0x03,0x02,0x02,0x02,0x1A,0x0A,0x06,0x0A,0x13,0x00,0x00},/*"k",75*/ | ||||||
|  |     {0x00,0x07,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x1F,0x00,0x00},/*"l",76*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x00,0x0F,0x15,0x15,0x15,0x15,0x00,0x00},/*"m",77*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x00,0x0F,0x12,0x12,0x12,0x37,0x00,0x00},/*"n",78*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x00,0x0C,0x12,0x12,0x12,0x0C,0x00,0x00},/*"o",79*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x00,0x0F,0x12,0x12,0x12,0x0E,0x02,0x07},/*"p",80*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x00,0x1C,0x12,0x12,0x12,0x1C,0x10,0x38},/*"q",81*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x00,0x1B,0x06,0x02,0x02,0x07,0x00,0x00},/*"r",82*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x00,0x1E,0x02,0x0C,0x10,0x1E,0x00,0x00},/*"s",83*/ | ||||||
|  |     {0x00,0x00,0x00,0x04,0x04,0x1E,0x04,0x04,0x04,0x1C,0x00,0x00},/*"t",84*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x00,0x1B,0x12,0x12,0x12,0x3C,0x00,0x00},/*"u",85*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x00,0x1B,0x0A,0x0A,0x04,0x04,0x00,0x00},/*"v",86*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x00,0x15,0x15,0x0E,0x0A,0x0A,0x00,0x00},/*"w",87*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x00,0x1B,0x0A,0x04,0x0A,0x1B,0x00,0x00},/*"x",88*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x00,0x33,0x12,0x12,0x0C,0x08,0x04,0x03},/*"y",89*/ | ||||||
|  |     {0x00,0x00,0x00,0x00,0x00,0x1E,0x08,0x04,0x04,0x1E,0x00,0x00},/*"z",90*/ | ||||||
|  |     {0x18,0x08,0x08,0x08,0x08,0x0C,0x08,0x08,0x08,0x08,0x18,0x00},/*"{",91*/ | ||||||
|  |     {0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08},/*"|",92*/ | ||||||
|  |     {0x06,0x04,0x04,0x04,0x04,0x08,0x04,0x04,0x04,0x04,0x06,0x00},/*"}",93*/ | ||||||
|  |     {0x16,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"~",94*/ | ||||||
|  | }; | ||||||
| @ -1,6 +1,8 @@ | |||||||
| /* Includes ----------------------------------------------------------------- */ | /* Includes ----------------------------------------------------------------- */ | ||||||
| #include "task\user_task.h" | #include "task\user_task.h" | ||||||
| #include "bsp\led.h" | #include "bsp\led.h" | ||||||
|  | #include "bsp\buzzer.h" | ||||||
|  | #include "device\lcd.h" | ||||||
| 
 | 
 | ||||||
| /* Private typedef ---------------------------------------------------------- */ | /* Private typedef ---------------------------------------------------------- */ | ||||||
| /* Private define ----------------------------------------------------------- */ | /* Private define ----------------------------------------------------------- */ | ||||||
| @ -12,7 +14,11 @@ void Task_Monitor(void *argument) { | |||||||
|     (void)argument; // 消除未使用参数的警告
 |     (void)argument; // 消除未使用参数的警告
 | ||||||
|     const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_MONITOR; // 100Hz
 |     const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_MONITOR; // 100Hz
 | ||||||
|     uint32_t tick = osKernelGetTickCount(); /* 控制任务运行频率的计时 */ |     uint32_t tick = osKernelGetTickCount(); /* 控制任务运行频率的计时 */ | ||||||
| 
 |     LCD_Init(); | ||||||
|  |     LCD_Clear(BLACK); | ||||||
|  |     LCD_Clear(RED); | ||||||
|  |     LCD_DrawChar(0, 0, '0', WHITE, BLACK); // 在屏幕上显示字符
 | ||||||
|  |     LCD_DrawString(0, 20, "Hello", WHITE, BLACK); // 在屏幕上显示字符串
 | ||||||
|     BSP_LED_Set(BSP_LED_RED, BSP_LED_ON, 0); |     BSP_LED_Set(BSP_LED_RED, BSP_LED_ON, 0); | ||||||
|     BSP_LED_Set(BSP_LED_BLUE, BSP_LED_ON, 0); |     BSP_LED_Set(BSP_LED_BLUE, BSP_LED_ON, 0); | ||||||
|     while (1) { |     while (1) { | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 RB
						RB