本文共 2840 字,大约阅读时间需要 9 分钟。
本项目旨在开发一个电压测量监控设备,该设备由多个模块组成,使用简便易懂。为了完成简单项目,需理清程序框架。功能主要分为显示界面、设置界面和串口接发三部分。
设备的主要功能包括显示界面、设置界面和串口接发。
#include "main.h"#include "RCC/bsp_rcc.h"#include "KEY_LED/bsp_key_led.h"#include "LCD/bsp_lcd.h"#include "UART/bsp_uart.h"#include "I2C/bsp_i2c.h"#include "ADC/bsp_adc.h"#include "RTC/bsp_rtc.h"uint32_t uwTick_Key_Set_Point = 0;uint32_t uwTick_Led_Set_Point = 0;uint32_t uwTick_Lcd_Set_Point = 0;uint32_t uwTick_Usart_Set_Point = 0;uint32_t uwTick_Set_time_Set_Point = 0;uint32_t uwTick_Uart_TI_time_Set_Point = 0;bool Start_Flag = false;uint8_t ucKey_Val, unKey_Down, ucKey_Up, ucKey_Old;uint8_t ucLed = 0;uint8_t Lcd_Disp_String[21];uint8_t str[40];uint8_t rx_buffer[100];uint8_t rx_buf = 0;uint8_t rx_buf_index = 0;uint8_t k_int = 1;RTC_TimeTypeDef sTime = {0};RTC_DateTypeDef sDate = {0};uint8_t LCD_GUI = 0x00;uint8_t time_disp[3] = {0};uint8_t time_ctrl[3] = {0};uint8_t set_ctrl = 0;uint8_t led_ctrl = 1;uint8_t Ctrl_Uart_Send_Time_Data_Times = 0;// 减速变量__IO uint32_t uwTick_Key_Set_Point = 0;__IO uint32_t uwTick_Led_Set_Point = 0;__IO uint32_t uwTick_Lcd_Set_Point = 0;__IO uint32_t uwTick_Usart_Set_Point = 0;__IO uint32_t uwTick_Set_time_Set_Point = 0;__IO uint32_t uwTick_Uart_TI_time_Set_Point = 0;// 按键扫描专用变量uint8_t ucKey_Val, unKey_Down, ucKey_Up, ucKey_Old;// LED专用变量uint8_t ucLed = 0;// LCD显示专用变量uint8_t Lcd_Disp_String[21];// 串口专用变量uint8_t str[40];uint8_t rx_buffer[100];uint8_t rx_buf;uint8_t rx_buf_index = 0;// EEPROM相关变量uint8_t k_int = 1;// RTC时间RTC_TimeTypeDef sTime = {0};RTC_DateTypeDef sDate = {0};uint8_t LCD_GUI = 0x00; // 默认显示界面// 子函数void Key_Proc(void);void Led_Proc(void);void Lcd_Proc(void);void Usart_Proc(void);// 主函数int main(void) { // 系统初始化 HAL_Init(); SystemClock_Config(); KEY_LED_Init(); LCD_Init(); LCD_Clear(White); LCD_SetBackColor(White); LCD_SetTextColor(Blue); UART1_Init(); I2CInit(); ADC1_Init(); ADC2_Init(); RTC_Init(); // 外设使用 // 串口接收中断打开 HAL_UART_Receive_IT(&huart1, (uint8_t *)&rx_buffer, 4); while (1) { Key_Proc(); Led_Proc(); Lcd_Proc(); Usart_Proc(); v1 = getADC2() / 4096.0 * 3.3; }} k0.x\n,转换为十六进制为 6B 30 2E 31 5C 6E。LCD_GUI 变量控制界面切换。time_disp 和 time_ctrl 变量控制时间显示和上报。time_ctrl 变量。Ctrl_Uart_Send_Time_Data_Times 变量管理。本项目通过模块化设计和简洁的代码实现,确保设备功能稳定可靠。
转载地址:http://nygfk.baihongyu.com/