/******************************************************************************
版权所有: 深圳**科技有限公司
文件名: main.c
作者: ***
创建日期: 2022/4/16
描述: 主入口函数
其它:
修改历史: //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简述
序号 修改时间 修改人 修改内容
???? ????/??/?? ?????? 参考样式
******************************************************************************/
#include "FreeRTOS.h"
#include "hard_config.h"
#include "yc3121.h"
#include "yc_gpio.h"
#include "yc_uart.h"
#include "yc_ipc.h"
#include "yc_systick.h"
#include "usb_main.h"
#include "yc_power.h"
#include "yc_timer.h"
#include "yc_it.h"
#include "misc.h"
#include <string.h>
#include <stdio.h>
#include "type.h"
#include "hard_config.h"
#include "driver_timer.h"
#include "driver_adc.h"
#include "bsp_beep_control.h"
#include "api_para_set.h"
#include "task_power_process.h"
#include "task_watchdog_process.h"
#include "task_data_process.h"
#include "task_print_state_process.h"
#include "task_iap_update.h"
#include "task_test_process.h"
#include "task_print_process.h"
#include "task_supplies_process.h"
#include "bsp_led_control.h"
#include "bsp_motor_control.h"
#include "bsp_sensor.h"
#include "driver_timer.h"
#include "driver_iwdg.h"
#include "bsp_key.h"
#include "api_key.h"
#include "nfc.h"
#include "ws1850s.h"
#include "api_paper_calibration.h"
#include "task.h"
#include "portable.h"
#include "api_print.h"
//******************************************* 创建任务句柄
static TaskHandle_t Main_Task_Handle = NULL; /* 创建任务句柄 */
static TaskHandle_t APP_Task_Handle = NULL; /* 应用程序 任务句柄 */
static TaskHandle_t RFID_Task_Handle = NULL; /* RFID 任务句柄 */
//*********************************************************************
static void APP_TASK(void*parameter)
{
(void)parameter;
while(1){
// MyPrintf("APP_TASK-----\r\n");
//看门狗任务
Task_Watchdog_Process(); //包含喂狗、更新灯状态、按键刷新
//电源控制任务
Task_Power_Control_Process(); //包含IPC初始化,充电初始化,ADC配置,智能卡初始化
//协议解析任务
Task_Data_Analysis_Process();
//打印状态检测
Task_PrintState_Process(); //包含光耦状态、机器状态、电池电压状态
//打印过程
//测试任务
if(MACHINE_TEST == Machine_State)
{
Task_Test_Process();
}
//远程升级检测任务
if(MACHINE_UPDATE == Machine_State)
{
Task_API_Update_Process();
}
vTaskDelay(1); /* 延时2个tick */
}
}
//****************************************************************************
static void RFID_TASK(void*parameter)
{
(void)parameter;
while(1){
// MyPrintf("RFID_TASK-----\r\n");
Task_supplies_Process(); //RFID任务
vTaskDelay(2000); /* 延时2个tick */
}
}
//----------------------------------------------------------------------------
static void main_task(void *pvParameters)
{
(void)pvParameters;
taskENTER_CRITICAL(); //进入临界区
uint8_t App_Task ;
uint8_t Rfid_Task ;
/* 创建 APP_Task 任务 */
App_Task = xTaskCreate((TaskFunction_t )APP_TASK, /* 任务入口函数 */
(const char* )"Application_Task", /* 任务名字 */
(uint16_t )512, /* 任务栈大小 */
(void* )NULL, /* 任务入口函数参数 */
(tskIDLE_PRIORITY + 1), /* 任务的优先级 */
(TaskHandle_t* )&APP_Task_Handle); /* 任务控制块指针 */
/* 创建 RFID_Task 任务 */
Rfid_Task = xTaskCreate((TaskFunction_t )RFID_TASK, /* 任务入口函数 */
(const char* )"Rfid_Task", /* 任务名字 */
(uint16_t )512, /* 任务栈大小 */
(void* )NULL, /* 任务入口函数参数 */
(tskIDLE_PRIORITY + 0), /* 任务的优先级 */
(TaskHandle_t* )&RFID_Task_Handle); /* 任务控制块指针 */
// MyPrintf("App_TASK =%d\r\n",App_Task);
// MyPrintf("RFID_TASK =%d\r\n",Rfid_Task);
vTaskDelete(Main_Task_Handle); //删除 main_task 任务
taskEXIT_CRITICAL(); //退出临界区
}
//------------------------------------------------------------------------------
static void prvInitialiseHeap(void) //
{
static uint8_t ucHeap[ configTOTAL_HEAP_SIZE ];
const HeapRegion_t xHeapRegions[] =
{
{ ucHeap, configTOTAL_HEAP_SIZE },
{ NULL, 0 }
};
vPortDefineHeapRegions(xHeapRegions);
}
BOOL initFlag = 0;
//------------------------------------------------------------------------------
int main()
{
prvInitialiseHeap();
configASSERT(POS_MANAGE_PRIORITY < configTIMER_TASK_PRIORITY);
SYSCTRL_HCLKConfig(SYSCTRL_HCLK_Div_None); //默认配置不分频
//sys
NVIC_Config(); //NVIC配置
//初始化串口 用于打印数据
UART0_Configuration(921600); //调试用串口 初始化
MyPrintf("App Init OK\r\n");
//api
Test_Store_Init(); //测试参数读取
Task_Power_Control_Init(); //电源控制/初始化/ADC配置/打开3V3电源/充电初始化 /启动充电/滴答时钟配置
Para_Store_Init(); //参数读取
Key_Init(); //按键初始化
// Task_Print_Process_Init(); //打印任务初始化
LED_Control_Init();
Task_Data_Process_Init(); //协议解析 USB及蓝牙 初始化
Task_PrintState_Init(); //打印状态信息检测 初始化
Task_supplies_Init(); //初始化RFID相关
SensorControl_Init();
MyPrintf("PowerOn\r\n");
//开打印头电源
// Matchine_5V_PrintHead_Motor_Power_On();
//定时器控制 初始化
timer_all_config();
//看门狗初始化
WDT_Configuration();
//启动基础定时器(1ms)
TIMER_BASE_START;
//启动RFID定时器(10ms)
Init_KalmanInfo(&KFP_height,0.01,0.5);
// Buzzer_OnOff(false); //启动蜂鸣器 U20没有蜂鸣器
// CaliSelftPrintTestInit();
// Task_Print_Process_Init(); //打印任务初始化
uint16_t adc_value[MAX_SENSOR_SCALE];
xTaskCreate(main_task, "MAIN", 4 * configMINIMAL_STACK_SIZE, NULL, (tskIDLE_PRIORITY + 2), (TaskHandle_t* )&Main_Task_Handle);
initFlag = 1;
vTaskStartScheduler();
while(1) ; //正常不会执行到这里
}