做网站找哪个软件仙居住房和城乡建设部网站

当前位置: 首页 > news >正文

做网站找哪个软件,仙居住房和城乡建设部网站,怎么做一个网站平台,江苏中星建设集团网站概念 GPT#xff0c;全称General Purpose Timer#xff0c;就是个通用定时器#xff0c;取的名字奇怪了点。定时器是一定要的#xff0c;要么提供给BSW去使用#xff0c;要么提供给OS去使用。 配置 General GptDeinitApi控制接口Gpt_DeInit是否启用 GptEnableDisable…概念 GPT全称General Purpose Timer就是个通用定时器取的名字奇怪了点。定时器是一定要的要么提供给BSW去使用要么提供给OS去使用。 配置 General GptDeinitApi控制接口Gpt_DeInit是否启用 GptEnableDisableNotificationApi控制接口Gpt_EnableNotification和Gpt_DisableNotification是否启用。 GptTimeElapsedApi控制接口Gpt_GetTimeElapsed是否启用 GptTimeRemainingApi控制接口Gpt_GetTimeRemaining是否启用 GptTimeElapsedApi控制接口Gpt_GetTimeElapsed是否启用 GptTimeRemainingApi控制接口Gpt_GetTimeRemaining是否启用 GptVersionInfoApi控制接口Gpt_GetVersionInfo是否启用 GptWakeupFunctionalityApi控制唤醒相关功能接口接口Gpt_SetMode, Gpt_EnableWakeupGpt_DisableWakeup和Gpt_Cbk_CheckWakeup()是否启用。 这里介绍一下定时器唤醒机制如果硬件支持并启用内部硬件计时器可以作为唤醒源如果一个通道作为唤醒源就不能用来做其他的用途。 GptDevErrorDetect开发者错误检测是PORT_DEV_ERROR_DETECT宏定义的开关新人可以勾选它能帮你检查出一些开发阶段的错误。老手一般不打开因为会影响到代码的执行效率。 GptReportWakeupSource控制唤醒源报告是否启用 GptEnableDualClockMode在模式转换时启用预分频器设置一般用不上。 GptEnablePit64启用pit 64位功能PIT就是Periodic Interrupt Timer周期中断定时器PIT64就是一个大点的PIT计时器能容纳更大的tick数据因为芯片只有32位所以分开高32位和低32位传回来。 GptClockReferencePoint 这里就是在GPT模块里面创建个时钟引用本身不创建任何东西只是把MCU模块里面配置的时钟引用过来作为一个基准时钟给到GptChannelConfigSet里面的定时器去用。 GptChannelConfigSet GptChannelConfiguration里面的才是主要的配置每个容器就是一个通用定时器。 GptChannelId自己排序的号 GptHwChannel物理通用定时器通道可以选STMSystem Timer Module系统时钟模块/GTMGeneric Timer Module通用定时器模块/PITPeriodic Interrupt Timer周期中断定时器之类的。 STM系统时钟模块适用于系统级任务如系统心跳或任务调度通常与系统时钟直接相关。GTM通用定时器模块适合需要多种功能的场景如PWM生成、输入捕捉和比较输出灵活性高。PIT周期中断定时器专为生成周期性中断设计适合需要定期执行任务的情况。 GptChannelMode定时器超时之后的行为也就是连续计时还是一次性计时。 GptChannelTickFrequency指定定时器的频率单位为Hz。最大不能大于下面引用的GptClockReferencePoint引用的MCU时钟下面称为“引用的MCU时钟”。 对于STM引用的MCU时钟除以定时器频率小于等于256。 对于RTC引用的MCU时钟除以定时器频率只能是32或512或16384。 其他通道改这个配置值是不起作用的。 GptFreezeEnable勾选之后不能在代码运行的时候修改硬件通道。 GptEnableWakeup使能通道唤醒功能 GptNotification通用定时器的回调函数这个函数要自己实现动态代码只会生成个定义不会实现出来。 GptChannelClkSrcRef选择GptClockReferencePoint里面的引用这个引用后面会再引用到MCU的时钟源。具体GPT的时钟基础就是引用的MCU频率在Gpt_StartTimer接口里面设置超时时间到达超时时间就会调用回调函数。 GptWakeupSourceRef唤醒源从ECU状态管理器里面获取。 GptDisableEcumWakeupSourceNotification通过调用EcuM_CheckWakeup接口启用/禁用EcuM通知 静态代码 Gpt_CheckWakeup检查支持唤醒的GPT通道是否是唤醒事件的源并调用ECU状态管理器服务EcuM_SetWakeupEvent用于有效的GPT通道唤醒事件。在调用Gpt_Cbk_CheckWakeup之前需要初始化驱动程序。 Gpt_DeInit逆初始化接口根据硬件通道是STM/PIT/GTM/PIT1类型来操作对应的寄存器。譬如硬件通道是STM类型的就操作STM_CR寄存器失能定时器、分频数设置为0操作STM_CCR寄存器失能STM通道里面跟定时器相关的配置操作STM_CMP寄存器将比较器里面的值清零操作STM_CIR寄存器清除中断标志位。最后无论是什么类型的硬件通道都会把通道状态进行重置模式设置为普通回调函数指针清空。 Gpt_DisableWakeup禁用单个GPT通道的唤醒中断调用。实际上就是调用Gpt_LLD_DisableWakeup接口根据硬件通道类型去失能对应通道的中断入参是物理通道ID需要在动态代码里面复制。 Gpt_EnableNotification开启单个GPT通道的唤醒中断调用操作Gpt_DisableWakeup相反。 Gpt_GetTimeElapsed获取从开始计时或重新开始计时到现在的tick实际上是调用Gpt_LLD_GetTimeElapsed接口获取当前tick返回。 Gpt_GetTimeRemaining获取现在到超时之间的tick实际上是调用Gpt_LLD_GetTimeRemaining接口获取当前tick和超时tick进行相减后返回。 Gpt_GetVersionInfo获取版本信息需要传入一个Std_VersionInfoType类型的结构体指针接口会把版本信息赋值到传入的结构体里面。 Gpt_Init初始化的时候需要调用入参是Gpt_ConfigType类型的结构体指针接口会把入参的结构体或者Gpt_InitConfigPC结构体里面的内容赋值给全局结构体Gpt_Cfg_Ptr这个结构体会在Gpt_LLD_SetSleepMode等GPT相关的操作函数里面使用到。 Gpt_SetMode设置GPT的模式只有GPT_MODE_NORMAL和GPT_MODE_SLEEP可以选。如果是GPT_MODE_NORMAL调用Gpt_LLD_SetNormalMode接口有回调函数就使能回调函数使能定时器。如果是GPT_MODE_SLEEP调用Gpt_LLD_SetSleepMode停止定时器并失能有回调函数失能回调函数。并且在执行过程中调用Gpt_Schm_ProtectResource和Gpt_Schm_UnprotectResource保护GPT的执行。 Gpt_StartTimer启动定时器入参为GPT通道和超时值单位为tick。先调用Gpt_LLD_CheckStartTimeoutValue检查超时值是否合理再调用Gpt_LLD_StartTimer开始计时。并且在执行过程中调用Gpt_Schm_ProtectResource和Gpt_Schm_UnprotectResource保护GPT的执行。 Gpt_StopTimer停止定时器调用Gpt_LLD_StopTimer暂停计时。并且在执行过程中调用Gpt_Schm_ProtectResource和Gpt_Schm_UnprotectResource保护GPT的执行。 Gpt_DisableNotification失能定时器函数回调机制。 Gpt_DisableNotification_Pit64失能Pit64的回调机制其实就是清除PIT1_TCTRL寄存器。并且在执行过程中调用Gpt_Schm_ProtectResource和Gpt_Schm_UnprotectResource保护GPT的执行。 介绍到这里需要注意一件事情就是启动定时器之前如果有回调函数就要先使能回调机制。暂停定时器的时候如果有回调函数就要失能回调机制放在暂停定时器的前还是后都可以。 Gpt_EnableNotification_Pit64使能Pit64的回调机制 Gpt_EnableWakeup_Pit64使能PIT64的唤醒功能 Gpt_GetTimeElapsed_Pit64获取PIT64从开始计时或重新开始计时到现在的tick Gpt_GetTimeRemaining_Pit64获取PIT64计时器离超时还有多久的tick Gpt_StartTimer_Pit64启动PIT64计时器 Gpt_StopTimer_Pit64暂停PIT64计时器 动态代码 GPT_GTM_TOMx_CH_y_ISR_USED其中x和y都是可变的数字当你选择的GPT通道为GTM的就会出现这类定义这类定义会将动态代码里面的ISR(Gpt_TOM_x_CHy_CHz_ISR);接口编译进来其中xyz都是可变数字。其实就是开启一个TOM的中断并且把该接口实现该接口本质上就是调用Gpt_Gtm_LLD_ProcessInterrupt接口执行产生中断时候的动作譬如重载、调用回调函数之类的。 其他的GTM和STM、PIT也类似。 Gpt_InitChannelPC_1数组里面有每一个GPT的初始配置信息用来给Gpt_Init初始化的。