Fetch the repository succeeded.
This action will force synchronization from 格维开源社区/FreeMQ, which will overwrite any changes that you have made since you forked the repository, and can not be recovered!!!
Synchronous operation will process in the background and will refresh the page when finishing processing. Please be patient.
/*---------------------------------------------------------------------*/
/* --- STC MCU Limited ------------------------------------------------*/
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
/* --- Mobile: (86)13922805190 ----------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
/* --- Web: www.STCMCU.com --------------------------------------------*/
/* --- Web: www.STCMCUDATA.com ---------------------------------------*/
/* --- QQ: 800003751 -------------------------------------------------*/
/* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序 */
/*---------------------------------------------------------------------*/
#include "config.h"
#include "FreeMQ.h"
#include "GPIO.h"
#include "Timer.h"
//打开加热器
#define LEDOn() P12 = 1
//关闭加热器
#define LEDOff() P12 = 0
/************* 功能说明 **************
FreePrint3D打印机空气管理器
******************************************/
/************* 本地常量声明 **************/
//所有事件
typedef enum
{
MSG_START = 1, //启动
MSG_MainLoop, //主循环
MSG_LEDOn, //灯打开
MSG_LEDOff, //灯关闭
} MESSAGESLIST;
/******************* IO配置函数 *******************/
void GPIO_config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.Pin = GPIO_Pin_All; //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7
GPIO_InitStructure.Mode = GPIO_PullUp; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
GPIO_Inilize(GPIO_P1, &GPIO_InitStructure); //初始化
}
/***************定时器初始化与中断*************************/
void Timer0Init(void) // 1毫秒@24.000MHz
{
Timer0_Stop(); //停止计数
TMOD = (TMOD & ~0x03) | TIM_16BitAutoReload; //工作模式,0: 16位自动重装, 1: 16位定时/计数, 2: 8位自动重装, 3: 不可屏蔽16位自动重装
Timer0_1T();
Timer0_CLKO_Disable(); //输出时钟使能
T0_Load(65536UL - (MAIN_Fosc / 1000UL));
Timer0_Run();
Timer0_InterruptEnable();
}
void Timer0IntHandle(void) interrupt TIMER0_VECTOR
{
//FreeMQMainTick(100000); //加速可测试队列时间戳复位
FreeMQMainTick(1);
}
//主循环
void MainLoopRun(void)
{
//主要要做的事情
}
//启动后第一次运行
void Startup(void)
{
//初始化过程
LEDOff();
FreeMQSendMessageToMainLater(MSG_MainLoop, 500);
}
/**********************消息队列处理器**********************/
void FreeMQMsgHandle(u8 msgid)
{
switch (msgid)
{
case MSG_MainLoop: //主循环
MainLoopRun();
//喂看门狗
FreeMQSendMessageToMainLater(MSG_MainLoop, 500); //主循环每500ms循环一次
break;
case MSG_START: //程序启动
Startup();
break;
case MSG_LEDOn: //打开LED
LEDOn();
FreeMQSendMessageToMainLater(MSG_LEDOff, 1000);
break;
case MSG_LEDOff: //关闭LED
LEDOff();
FreeMQSendMessageToMainLater(MSG_LEDOn, 500);
break;
}
}
/********************主函数*********************/
void main(void)
{
FreeMQMainInit(&FreeMQMsgHandle);
GPIO_config();
Timer0Init();
EA = 1;
FreeMQSendMessageToMainLater(MSG_START, 10);
while (1)
{
FreeMQMainLoop();
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。