first commit
This commit is contained in:
94
Users/main.c
Normal file
94
Users/main.c
Normal file
@@ -0,0 +1,94 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @文件 main.c
|
||||
* @作者 阜阳师范大学物电学院
|
||||
* @版本 V0.1
|
||||
* @日期 2026-01-15
|
||||
* @简介 DTU 屏幕按键部分的驱动程序
|
||||
******************************************************************************
|
||||
**/
|
||||
|
||||
#include "main.h"
|
||||
|
||||
#define TIMER 5 /* 定时器定时时间 */
|
||||
#define LED_TOGGLE_TIME 1000 /* 系统运行指示灯闪烁时间,也就是亮的时间*/
|
||||
|
||||
volatile static uint32_t sysRunTime = 0; /* 系统运行时间计数器 */
|
||||
volatile static uint8_t LED_ToggleFlag = 0; /* LED闪烁定时标志位 */
|
||||
static KEY_TYPE keyStatus = KEY_NONE; /* 按键状态指示 */
|
||||
static uint8_t ConnectFlg = 0; /**< 连接标志:0x01=已连接,0x00=未连接 */
|
||||
|
||||
/**
|
||||
* @brief 按键业务逻辑回调函数
|
||||
* @param key_type 按键类型
|
||||
*/
|
||||
static void Key_ProcessCallback(KEY_TYPE key_type)
|
||||
{
|
||||
BackLight_ON(); /* 任意按键按下,都打开背光 */
|
||||
keyStatus = key_type; /* 更新按键状态 */
|
||||
}
|
||||
|
||||
|
||||
int main(void)
|
||||
{
|
||||
HAL_Init(); /* 初始化HAL库 */
|
||||
sys_stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */
|
||||
delay_init(72); /* 延时初始化 */
|
||||
LED_Init(); /* LED灯初始化 */
|
||||
Key_Init(); /* 初始化按键驱动 */
|
||||
WDog_Init(); /* 看门狗初始化 */
|
||||
RS485_DMA_init(); /* Rs485初始化 */
|
||||
gtim_timx_int_init(50-1, 7200-1); /* 定时5毫秒 */
|
||||
// 注册按键业务逻辑回调函数
|
||||
Key_RegisterCallback(Key_ProcessCallback); /* 注册按键回调函数 */
|
||||
NL_LOGO_Printf(); /* 显示存储的LOGO */
|
||||
Process_Init(); /* 通信任务初始化 */
|
||||
|
||||
while(1)
|
||||
{
|
||||
if(ConnectFlg == 1)
|
||||
{
|
||||
/* 指示灯闪烁 */
|
||||
if(LED_ToggleFlag == 1)
|
||||
{
|
||||
LED_ToggleFlag = 0;
|
||||
LED_Toggle(LED_RUN);
|
||||
}
|
||||
}
|
||||
ConnectFlg = RS485_Process(keyStatus, ConnectFlg);
|
||||
keyStatus = KEY_NONE;
|
||||
|
||||
/*系统运行超过一定时间立即复位重启*/
|
||||
if(sysRunTime > 1000000)
|
||||
{
|
||||
HAL_NVIC_SystemReset(); /* 系统立即复位 */
|
||||
sysRunTime = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 定时器中断服务函数
|
||||
* @param 无
|
||||
* @retval 无
|
||||
*/
|
||||
void GTIM_TIMX_INT_IRQHandler(void)
|
||||
{
|
||||
/*直接通过判断中断标志位来处理中断 */
|
||||
if(__HAL_TIM_GET_FLAG(&g_timx_handle, TIM_FLAG_UPDATE) != RESET)
|
||||
{
|
||||
sysRunTime++;
|
||||
if(sysRunTime % (LED_TOGGLE_TIME / 5) == 0)
|
||||
{
|
||||
LED_ToggleFlag = 1;
|
||||
}
|
||||
Button_Ticks(); /* 按键检测 */
|
||||
Clear_Watchdog(); /* 看门狗喂狗 */
|
||||
BackLight_Close(); /* 背光关闭检测 */
|
||||
Process_Count(); /* 通信任务处理计数器 */
|
||||
}
|
||||
__HAL_TIM_CLEAR_IT(&g_timx_handle, TIM_IT_UPDATE); /* 清楚定时器溢出中断 */
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user