MCU编译时间模板 永久适用
/ 编译日期
1、Jan. January 一月;
2、Feb. February 二月;
3、Mar. March 三月;
4、Apr. April 四月;
5、May无缩写 五月;
6、Jun. June 六月;
7、Jul. July 七月;
8、Aug. August 八月;
9、Sept. September九月;-----》多出一位 所以看12 月才是这样 Dec 6 2022 两个空格 9月 Sept 6 2022 -》月空格日空格年
10、Oct. October 十月;
11、Nov. November 十一月;
12、Dec. December 十二月。*/*
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#define KEIL_MDK_COMPILE_YEAR ( (__DATE__[7] - '0') * 1000 + (__DATE__[8] - '0') * 100 + (__DATE__[9] - '0') * 10 + (__DATE__[10] - '0') )
/* 一月、六月的缩写第三个字母一样(n),三月、四月的缩写第三个字母一样(r)。此时需要根据第二个字母区分 */
/*x>y? x:y :三目运算符 如果x>y 返回x 否则返回y 这里只返回满足条件的第一个*/
#define KEIL_MDK_COMPILE_MONTH ( (__DATE__[2] == 'b' ? 2 : \
(__DATE__[2] == 'y' ? 5 : \
(__DATE__[2] == 'l' ? 7 : \
(__DATE__[2] == 'g' ? 8 : \
(__DATE__[2] == 'p' ? 9 : \
(__DATE__[2] == 't' ? 10 : \
(__DATE__[2] == 'v' ? 11 : \
(__DATE__[2] == 'c' ? 12 : \
(__DATE__[2] == 'n' ? \
(__DATE__[1] == 'a' ? 1 : 6) : \
(__DATE__[1] == 'a' ? 3 : 4)))))))))) )
//日
#define KEIL_MDK_COMPILE_DATE ( (__DATE__[4] == ' ') ? (__DATE__[5] - '0') : ((__DATE__[4] - '0') * 10 + (__DATE__[5] - '0')) )
#define KEIL_MDK_COMPILE_HOUR ( (__TIME__[0] - '0') * 10 + (__TIME__[1] - '0') )
#define KEIL_MDK_COMPILE_MINUTE ( (__TIME__[3] - '0') * 10 + (__TIME__[4] - '0') )
#define KEIL_MDK_COMPILE_SECOND ( (__TIME__[6] - '0') * 10 + (__TIME__[7] - '0') )
#define SOFTWARE_VERSION "01.12.34" //版本号 固定为xx.xx.xx
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
qDebug()<<"__DATE__="<<__DATE__; //Dec 6 2022
qDebug()<<"__DATE__ size="<<strlen (__DATE__);//11
qDebug()<<"__DATE__[0]="<<__DATE__[0];
qDebug()<<"__DATE__[1]="<<__DATE__[1];
qDebug()<<"__DATE__[2]="<<__DATE__[2];
qDebug()<<"__DATE__[3]="<<__DATE__[3];
qDebug()<<"__DATE__[4]="<<__DATE__[4];
qDebug()<<"__DATE__[5]="<<__DATE__[5];
qDebug()<<"__DATE__[6]="<<__DATE__[6];
qDebug()<<"__DATE__[7]="<<__DATE__[7] - '0';
qDebug()<<"__DATE__[8]="<<__DATE__[8];
qDebug()<<"__DATE__[9]="<<__DATE__[9];
qDebug()<<"__DATE__[10]="<<__DATE__[10];
qDebug()<<"KEIL_MDK_COMPILE_YEAR="<<KEIL_MDK_COMPILE_YEAR;//年 2022
qDebug()<<"KEIL_MDK_COMPILE_MONTH="<<KEIL_MDK_COMPILE_MONTH; //月 12
qDebug()<<"KEIL_MDK_COMPILE_DATE="<<KEIL_MDK_COMPILE_DATE; //日 6
qDebug()<<"KEIL_MDK_COMPILE_HOUR="<<KEIL_MDK_COMPILE_HOUR;//时
qDebug()<<"KEIL_MDK_COMPILE_MINUTE="<<KEIL_MDK_COMPILE_MINUTE; //分
qDebug()<<"KEIL_MDK_COMPILE_SECOND="<<KEIL_MDK_COMPILE_SECOND; //秒
}
MainWindow::~MainWindow()
{
delete ui;
}
//电源MCU发送
void MainWindow::on_pushButton_clicked()
{
uint8_t array[10] = {0x82, 0x00, 2};
static uint8_t flag = 0; //PWH2022.10
flag = 1;
printf("\r\n__DATE__ %s, ", __DATE__);
printf("__TIME__ %s, ", __TIME__);
array[3] = KEIL_MDK_COMPILE_YEAR >> 8;
array[4] = KEIL_MDK_COMPILE_YEAR;
array[5] = KEIL_MDK_COMPILE_MONTH;
array[6] = KEIL_MDK_COMPILE_DATE;
array[7] = KEIL_MDK_COMPILE_HOUR;
array[8] = KEIL_MDK_COMPILE_MINUTE;
array[9] = KEIL_MDK_COMPILE_SECOND;
printf("编译时间: %d/%d/%d %d:%d:%d",
KEIL_MDK_COMPILE_YEAR, KEIL_MDK_COMPILE_MONTH, KEIL_MDK_COMPILE_DATE,
KEIL_MDK_COMPILE_HOUR, KEIL_MDK_COMPILE_MINUTE, KEIL_MDK_COMPILE_SECOND);
SendToConSys(array, 10); //编译日期
printf("版本号: Ver%s\r\n", SOFTWARE_VERSION);
array[2] = 7; //命令字2:控制版本号
array[3] = SOFTWARE_VERSION[0] - '0';
array[4] = SOFTWARE_VERSION[1] - '0';
array[5] = SOFTWARE_VERSION[3] - '0';
array[6] = SOFTWARE_VERSION[4] - '0';
array[7] = SOFTWARE_VERSION[6] - '0';
array[8] = SOFTWARE_VERSION[7] - '0';
SendToConSys(array, 9);
}
//数据转移
int MainWindow::SendToConSys(uint8_t *p, uint16_t len)
{
uint16_t Length, i;
uint16_t checksum = 0;
int bRes = -1;
_DI();
Length = FIFO_GET_IDEL_COUNT(ConSysCommTxFifo); //获取Fifo剩余空间?
//DebugPrintf("\r\n ConSysComm Tx Fifo Length = %d ",Length);
if(Length > len + 4)
{
FIFO_PUT_ONE(ConSysCommTxFifo,0xFF);
FIFO_PUT_ONE(ConSysCommTxFifo,0x55);
FIFO_PUT_ONE(ConSysCommTxFifo,len+1); //长度(包括命令、参数、校验和三者之和的总长度)
checksum = (len+1);
for(i = 0;i < len;i++)
{
checksum += p[i];
FIFO_PUT_ONE(ConSysCommTxFifo, p[i]); //将命令、参数写进队列
}
checksum = checksum%256;
FIFO_PUT_ONE(ConSysCommTxFifo,checksum); //将校验和进队列
bRes = 0;
}
_EI();
if(len)
{
if(bRes < 0)
{
DebugPrintf("FIFO Length = %d ----- len = %d ",Length,len);
DebugPrintf("\r\n Error: Put LPC --> ControlSystem message to Fifo error:");
}
else
{
//DebugPrintf("\r\n Put to Fifo: LPC --> ControlSystem: ");
}
for(i = 0; i < len; i++)
{
//DebugPrintf("%02x ", p[i]);
}
}
return bRes;
}