示例#1
0
int WINAPI _tWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPTSTR lpCmdLine, _In_ int nCmdShow)
{
	LPTSTR lpszType, lpszMode, lpszFile;
	HANDLE hHeap;
	HWND hwnd;

	UNREFERENCED_PARAMETER(hPrevInstance);
	UNREFERENCED_PARAMETER(lpCmdLine);

	g_hModuleInstance = hInstance;

	hHeap = GetProcessHeap();
	if (!hHeap)
		return ERROR_NOT_ENOUGH_MEMORY;

	if (__argc > 3) {
		lpszType = __targv[1];
		lpszMode = __targv[2];
		lpszFile = __targv[3];

		if (__argc > 4)
			hwnd = (HWND) _tstoi(__targv[4]);
		else
			hwnd = NULL;

		if (!lpszType || !lpszMode || !lpszFile)
			return ERROR_INVALID_COMMAND_LINE;

		if (_tcsicmp(lpszType, TEXT("driver")) == 0) {
			if (_tcsicmp(lpszMode, TEXT("install")) == 0)
				return DriverInstall(hHeap, lpszFile, nCmdShow);
			else if (_tcsicmp(lpszMode, TEXT("uninstall")) == 0)
				return DriverUninstall(hHeap, lpszFile, nCmdShow);
			else
				return ERROR_INVALID_PARAMETER;

		} else if (_tcsicmp(lpszType, TEXT("device")) == 0) {
			if (_tcsicmp(lpszMode, TEXT("install")) == 0)
				return DeviceInstall(hHeap, lpszFile, hwnd, nCmdShow);
			else if (_tcsicmp(lpszMode, TEXT("uninstall")) == 0)
				return DeviceUninstall(hHeap, lpszFile, hwnd, nCmdShow);
			else
				return ERROR_INVALID_PARAMETER;

		} else
			return ERROR_INVALID_PARAMETER;
	} else
		return ERROR_INVALID_COMMAND_LINE;
}
示例#2
0
文件: usart1.c 项目: DharmaPatil/asp
s8 usart1_init(void)
{
	if(DeviceInstall(&usart1_cfg) != HVL_NO_ERR)			//设备注册
		return -1;
	return 0;
}																								//启用定时器计算包接收超时
示例#3
0
文件: timer7.c 项目: DharmaPatil/asp
/****************************************************************************
* 名	称:u8 TIM7_Config(TIM7_fun Cfun,u16 TimeUS,u8 mode)
* 功	能:定时器配置
* 入口参数:TIM7_fun Cfun		回调函数
						u16 TimeUS	需要定时的单位级别	微秒单位
						u8 mode			模式 0微秒	1毫秒	2秒
* 出口参数:u8	设置是否成功		1成功 0失败
* 说	明:无
****************************************************************************/
u8 TIM7_Config(TIM7_fun Cfun,u16 TimeUS,u8 mode)				//默认为毫秒中断
{
	//注册用变量
	DEV_REG tim7 = 			//设备注册信息表						不必static		
	{
		CHAR_TIM7,					//设备ID号
		0,  								//是否共享			0:不可共享使用, 1:可共享使用
		0, 									//对于共享设备最大打开次数
		1,									//最大读次数
		1,									//最大写次数
		TIM7_pDisc,					//驱动描述			自定义
		20120001,						//驱动版本			自定义
		(u32*)TIM7_Open,		//设备打开函数指针
		(u32*)TIM7_Close, 	//设备关闭函数指针
		(u32*)TIM7_Read,		//字符读函数
		(u32*)TIM7_Write,		//字符写函数
		(u32*)TIM7_Ioctl		//控制函数
	};
	
	TIM_TimeBaseInitTypeDef  T;							//创建定时器变量
	NVIC_InitTypeDef N;   									//创建中断管理变量

	u32 Period_t = 0;												//计算用定时值
	u16 Prescaler_t = 0;										//计算用分频系数
	
	if(TimeUS < 1)
		TimeUS = 2;														//防止Period_t计数器为0
	
	switch(mode)														//定时模式区分
	{
		case Mode_1US:
		{
			Period_t = TimeUS - 1;																				//计算用定时值
			Prescaler_t = SYS_CPU_SysTickClkFreq() / 2 / 1000000 - 1;			//计算用分频系数
			break;
		}
		case Mode_10US:
		{
			Period_t = TimeUS - 1;																				//计算用定时值
			Prescaler_t = SYS_CPU_SysTickClkFreq() / 2 / 100000 - 1;			//计算用分频系数
			break;
		}
		case Mode_100US:
		{
			Period_t = TimeUS - 1;																				//计算用定时值
			Prescaler_t = SYS_CPU_SysTickClkFreq() / 2 / 10000 - 1;				//计算用分频系数
			break;
		}
		case Mode_500US:
		{
			Period_t = TimeUS - 1;																				//计算用定时值
			Prescaler_t = SYS_CPU_SysTickClkFreq() / 2 / 2000 - 1;				//计算用分频系数
			break;
		}
		default:
			return 0;														//模式错误
	}
	
	//定时器配置
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7, ENABLE);	//给定时器分配时钟APB1	//APB1预分频为非1时,定时器时钟频率为2倍频即36*2=72MHZ
  TIM_DeInit(TIM7);																			//复位TIM2定时器到默认值
	
	//定时时间:72000000个频率为1秒,当前设置(TIM_Period+1) * (TIM_Prescaler+1)个频率后产生溢出中断
	T.TIM_Period = Period_t;										//定时值,减10000次发生一次溢出中断 (100微秒*10000=1秒) 定时器为16位的最大值65535
	T.TIM_Prescaler = Prescaler_t; 							//预分频系数	7200个频率后定时值减1	(7200个频率100微秒)
	
  T.TIM_ClockDivision = 0;										//时钟分割 在定时器预分频之前作一段延时,很少用到,设为0即可
  T.TIM_CounterMode = TIM_CounterMode_Up;			//向上计数		UP:10000到0的计数	DOWN:10000到FFFF
  TIM_TimeBaseInit(TIM7, &T);									//根据上面设置初始化定时器TIM2
  TIM_ClearFlag(TIM7, TIM_FLAG_Update);				//清空溢出中断

	//嵌套向量中断控制器设置	  
	N.NVIC_IRQChannel = TIM7_IRQn;							//配置对TIMx_IRQn的中断监听
  N.NVIC_IRQChannelPreemptionPriority = 0;		//抢先级
  N.NVIC_IRQChannelSubPriority = 0;						//响应级
  N.NVIC_IRQChannelCmd = ENABLE;							//开启中断监听
  NVIC_Init(&N); 															//根据上面设置初始化中断控制器
	
	if(Cfun != 0)																//回调函数不为空
		TIM7_Caller(Cfun);												//设置回调函数
	
	if(DeviceInstall(&tim7) != HVL_NO_ERR)			//设备注册
		return 0;
	
	return 1;
}