📄 main.c
字号:
/****************************************Copyright (c) ****************************************
** Guangzhou ZHIYUAN electronics Co.,LTD.
**
** http://www.embedtools.com
**
**―――File Info――――――――――――――――――――――――――――――――――――――
** File name :main.c
** Last modified Date :
** Last Version :V1.0
** Descriptions :用户主程序
**
**―――――――――――――――――――――――――――――――――――――――――――――
** Created by :
** Created date :
** Version :
** Descriptions: 通过调试观察RTC8563的运行
** 如果按下KEY1,实时时钟PCF8563重新恢复默认设置值为2007年6月22日,星期5,1时22分30秒
**
**―――――――――――――――――――――――――――――――――――――――――――――
** Modified by :
** Modified date :
** Version :
** Descriptions :
**
*******************************************************************************************/
#include "main.h"
#define TASK0_ID 16 // 任务的ID
#define TASK0_PRIO TASK0_ID // 任务的优先级
#define TASK0_STACK_SIZE 512 // 定义用户堆栈长度
#define TASK1_ID 17 // 任务的ID
#define TASK1_PRIO TASK1_ID // 任务的优先级
#define TASK1_STACK_SIZE 512 // 定义用户堆栈长度
#define TASK2_ID 18 // 任务的ID
#define TASK2_PRIO TASK2_ID // 任务的优先级
#define TASK2_STACK_SIZE 512 // 定义用户堆栈长度
#define TASK3_ID 19 // 任务的ID
#define TASK3_PRIO TASK3_ID // 任务的优先级
#define TASK3_STACK_SIZE 512 // 定义用户堆栈长度
#define TASK4_ID 20 // 任务的ID
#define TASK4_PRIO TASK4_ID // 任务的优先级
#define TASK4_STACK_SIZE 512 // 定义用户堆栈长度
#define TASK5_ID 21 // 任务的ID
#define TASK5_PRIO TASK5_ID // 任务的优先级
#define TASK5_STACK_SIZE 512 // 定义用户堆栈长度
OS_STK TASK0_STACK[TASK0_STACK_SIZE];
OS_STK TASK1_STACK[TASK1_STACK_SIZE];
OS_STK TASK2_STACK[TASK2_STACK_SIZE];
OS_STK TASK3_STACK[TASK3_STACK_SIZE];
OS_STK TASK4_STACK[TASK4_STACK_SIZE];
OS_STK TASK5_STACK[TASK5_STACK_SIZE];
void TASK0(void *pdata);
void TASK1(void *pdata);
void TASK2(void *pdata);
void TASK3(void *pdata);
void TASK4(void *pdata);
void TASK5(void *pdata);
/*******************************************************************************************
** Function name: main
** Descriptions : 主函数
** Input : 无
** Output : 无
*******************************************************************************************/
uint8 MCU_IP[4] = {192, 168, 1, 240}; // 初始化MCU的IP数组等信息
uint8 MCU_Mark[4] = {255, 255, 255, 0};
uint8 MCU_GateWay[4] = {192, 168, 1, 253};
uint16 MCU_Port = 8000;
uint8 PC_IP[4] = {192, 168, 1, 31}; // 初始化PC的IP数组等信息
uint16 PC_Port = 2000;
int main (void)
{
/*------------------ 系统初始化代码 -----------------*/
#if OS_CRITICAL_METHOD == 3 // Allocate storage for CPU status register
OS_CPU_SR cpu_sr;
#endif
TargetInit(); // 初始化系统,并检测系统固件版本号,如果不一致将通不过。
DevDriveIni(); // 初始化基础驱动库
/*---------------- 添加自己的初始化代码 ----------------*/
ZlgipInitial(MCU_IP, MCU_GateWay, MCU_Mark); // 初始化用户MCU系统IP
gpio_set(BUZZER); // 鸣叫BUZZER,注意 PWM 输出引脚与蜂鸣器是同一引脚
OSTimeDly(OS_TICKS_PER_SEC/10);
gpio_clr(BUZZER);
OSTimeDly(OS_TICKS_PER_SEC/10);
gpio_set(BUZZER);
OSTimeDly(OS_TICKS_PER_SEC/10);
gpio_clr(BUZZER);
/*--------------------------------------------*/
OSTaskCreateExt(TASK0,
(void *)0,
&TASK0_STACK[TASK0_STACK_SIZE-1],
TASK0_PRIO,
TASK0_ID,
&TASK0_STACK[0],
TASK0_STACK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskCreateExt(TASK1,
(void *)0,
&TASK1_STACK[TASK1_STACK_SIZE-1],
TASK1_PRIO,
TASK1_ID,
&TASK1_STACK[0],
TASK1_STACK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskCreateExt(TASK2,
(void *)0,
&TASK2_STACK[TASK2_STACK_SIZE-1],
TASK2_PRIO,
TASK2_ID,
&TASK2_STACK[0],
TASK2_STACK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskCreateExt(TASK3,
(void *)0,
&TASK3_STACK[TASK3_STACK_SIZE-1],
TASK3_PRIO,
TASK3_ID,
&TASK3_STACK[0],
TASK3_STACK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskCreateExt(TASK4,
(void *)0,
&TASK4_STACK[TASK4_STACK_SIZE-1],
TASK4_PRIO,
TASK4_ID,
&TASK4_STACK[0],
TASK4_STACK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskCreateExt(TASK5,
(void *)0,
&TASK5_STACK[TASK5_STACK_SIZE-1],
TASK5_PRIO,
TASK5_ID,
&TASK5_STACK[0],
TASK5_STACK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
while (1)
{
OSTimeDly(OS_TICKS_PER_SEC*10);
}
}
/*******************************************************************************************
**函数名称:void TimeToData(char *date,char *week,char *time,char *buff)
**函数功能:将时间转换成PCF8563所需要的数据格式,并将转换得到的数据存到 buff中;
**入口参数:char *date 初始化年月日
** char *week 初始化星期
** char *time 初始化时间
** char *buff 数据缓冲区
**出口参数:无
**说 明:在年月日和时间初始化参数设置时,如果遇到参数是个位数的,则在个位数前加0(星期的参
** 数可以不用加0),例如("2006-08-05","6","07:05:30")。
** 而("2006-8-5","6","7:5:30")是错误的输入。
*******************************************************************************************/
void TimeToData(char *date,char *week,char *time,char *buff)
{
TIME New_time; // 时间结构体
DATE New_data; // 日期结构体
New_data.year =((date[0]-'0')*1000)+((date[1]-'0')*100)+((date[2]-'0')*10+((date[3]-'0')*1)); // 提取年
New_data.mon =(((date[5]-'0')*10)+((date[6]-'0')*1)); // 提取月
New_data.day =(((date[8]-'0')*10)+((date[9]-'0')*1)); // 提取日
New_time.dow =(week[0]-'0'); // 提取星期
New_time.hour =(((time[0]-'0')*10)+((time[1]-'0')*1)); // 提取时
New_time.min =(((time[3]-'0')*10)+((time[4]-'0')*1)); // 提取分
New_time.sec =(((time[6]-'0')*10)+((time[7]-'0')*1)); // 提取秒
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -