获取KEIL编译器编译时间用于管理固件版本

KEIL内置的__DATE__ 和 TIME
利用KEIL内置_DATE_和_TIME_宏获取编译日期和时间

//加入MDK自己的年月日
#define MDK_YEAR ((((__DATE__[7] - '0')*10 + __DATE__[8] - '0')*10 \
                 +(__DATE__[9] - '0'))*10+(__DATE__[10] - '0'))               
#define MDK_MONTH get_month()            
#define MDK_DAY   ((__DATE__[4]==' ' ? 0 : __DATE__[4]-'0')*10 \
                    +(__DATE__[5] - '0'))
#define MDK_HOUR  ((__TIME__[0]-'0')*10 + __TIME__[1]-'0')
#define MDK_MIN   ((__TIME__[3]-'0')*10 + __TIME__[4]-'0')
#define MDK_SEC   ((__TIME__[6]-'0')*10 + __TIME__[7]-'0')

//从宏定义__DATE__中获取月份
uint8_t get_month(void)
{
  uint8_t month_val;
  switch(__DATE__[2])
  {
    case 'n':
	  if(__DATE__[1] == 'a')
        month_val = 1;
      else
        month_val = 6;
    break;
    case 'b':
      month_val = 2;
    break;
    case 'r':
      if(__DATE__[1] == 'a')
        month_val = 3;
      else
        month_val = 4;
    break;
    case 'y':
      month_val = 5;
    break;
    case 'l':
      month_val = 7;
    break;
    case 'g':
      month_val = 8;
    break;
    case 'p':
      month_val = 9;
    break;
    case 't':
      month_val = 10;
    break;
    case 'v':
      month_val = 11;
    break; 
    case 'c':
      month_val = 12;
    break; 
    default:
      month_val = 0;
      break;
  }
  return month_val;
}

你可能感兴趣的:(STM32)