月度归档:2019年04月

MDK 出现#68-D: integer conversion resulted in a change of sign(转)

在KeilARM的LPCARM,存在(1<<31)编译警告问题main.c(174): warning: #61-D: integer operation result is out of rangemain.c(174): warning: #68-D: integer conversion resulted in a change of sign由于编译器默认signed int即32位有符号整数类型,而1<<31实际为0x80000000,这样就有可能改写了符号位(最高位)依此类推,(2<<30),(3<<29)…等都会出现编译警告问题.解决办法为: ((unsigned int)1<<31),((unsigned int)2<<30),…

keil5 编译程序出现错误Error: L6411E: No compatible library exists with a definition of startup symbol __main(转)

Error: L6411E: No compatible library exists with a definition of startup symbol __main.
之前装过ADS,ADS与MDK冲突,依据网友提供的资料,最终的解决办法如下

在我的电脑点击属性>高级系统设置>高级>环境变量>在系统变量中>新建
(如果我的电脑只是快捷方式则属性中不会出现环境变量,需要在屏幕空白处右击,选择个性化,主题,找到桌面图标设置(系统不同,位置不一定一样,在个性化中可以找到),将计算机选项勾选即可)
变量名: ARMCC5LIB      
变量值:F:\Keil_v5\ARM\ARMCC\lib
(变量值是keil的安装目录,本人安装目录在F:\Keil_v5,剩下的目录是安装时系统自己建立,直接相同即可)
———————
作者:lnwechag
来源:CSDN
原文:https://blog.csdn.net/lnwechag/article/details/50760001
版权声明:本文为博主原创文章,转载请附上博文链接!

CH372实现HID键盘功能

有些IC发卡器在刷卡时,卡号可以填写在文档光标处。这种产品很多年前就有了,最近刚好有客户有这方面需求,用CH372做了一款HID键盘类型的发卡器。

一款HID设备包括设备描述符,配置描述符,接口描述符,端点描述符,HID描述符,HID描述符包括报告描述符,另外还有字符串描述符,语言描述符。对HID键盘设备,用BusHound抓包时没看到PC请求语言描述符和字符串描述符。

设备描述符:

image

image

配置描述符:

image

image

image

image

报告描述符: 继续阅读

LPC1768 内部RTC程序

typedef struct{

uint8_t RTC_Sec;

uint8_t RTC_Min;

uint8_t RTC_Hour;

uint8_t RTC_Mday;

uint8_t RTC_Wday;

uint16_t RTC_Yday;

uint8_t RTC_Mon;

uint16_t RTC_Year;

}RTCTime;

RTCTime LocalTime;

void RTCStart(void)

{

LPC_RTC->CCR |= 0x01;

}

void RTCInit( void )

{

LPC_SC->PCONP |= CLKPWR_PCONP_PCRTC; //开启RTC电源

if(!(LPC_RTC->CCR & 0x01)) //如果时钟没使能,使能时钟,使能位在芯片复位时状态不会变化,不用每次上电都使能

{

LPC_RTC->ILR = 0;

LPC_RTC->AMR = 0xff;

LPC_RTC->CIIR = 0;

LPC_RTC->CCR = 0;

LocalTime.RTC_Year = 2019;

LocalTime.RTC_Mon = 1;

LocalTime.RTC_Mday = 1;

LocalTime.RTC_Wday = 2;

LocalTime.RTC_Hour = 0;

LocalTime.RTC_Min = 0;

LocalTime.RTC_Sec = 0;

RTCSetTime(&LocalTime);

RTCStart();

}

}

void RTC_Get_Time(RTCTime* Time)

{

Time->RTC_Year= LPC_RTC->YEAR ;

Time->RTC_Mon = LPC_RTC->MONTH;

Time->RTC_Yday = LPC_RTC->DOY;

Time->RTC_Wday = LPC_RTC->DOW;

Time->RTC_Mday = LPC_RTC->DOM;

Time->RTC_Hour = LPC_RTC->HOUR;

Time->RTC_Min = LPC_RTC->MIN;

Time->RTC_Sec = LPC_RTC->SEC;

}

void RTCSetTime(RTCTime* Time)

{

LPC_RTC->SEC = Time->RTC_Sec;

LPC_RTC->MIN = Time->RTC_Min;

LPC_RTC->HOUR = Time->RTC_Hour;

LPC_RTC->DOM = Time->RTC_Mday;

LPC_RTC->DOW = Time->RTC_Wday;

LPC_RTC->DOY = Time->RTC_Yday;

LPC_RTC->MONTH = Time->RTC_Mon;

LPC_RTC->YEAR = Time->RTC_Year;

}