久久精品国产精品国产一区,少妇扒开毛毛自慰喷水,国产精品无码电影在线观看 ,久久天天躁夜夜躁狠狠85麻豆

思澈科技軟件開發(fā)工具包  2.20
GPT

GPT (General Purpose Timer) 基于一個(gè)16比特計(jì)數(shù)器,可實(shí)現(xiàn)計(jì)時(shí)、測量輸入信號(hào)的脈沖長度(輸入捕獲)或者產(chǎn)生輸出波形(輸出比較和PWM)等功能。計(jì)數(shù)器本身可以進(jìn)行向上、向下或者向上/向下計(jì)數(shù),計(jì)數(shù)時(shí)鐘為系統(tǒng)pclk或外部輸入信號(hào),并可進(jìn)行1~65536倍的預(yù)分頻。GPT共有4個(gè)channel,可以分別獨(dú)立配置為輸入捕獲或輸出模式。計(jì)數(shù),輸入捕獲和輸出比較的結(jié)果可以通過中斷或者DMA的方式通知系統(tǒng)。GPT包含主從模式接口,可以進(jìn)行多級(jí)級(jí)聯(lián),實(shí)現(xiàn)多級(jí)計(jì)數(shù)或同步觸發(fā)等功能。

GPT主要特性:

● 16位向上、向下、向上/向下自動(dòng)重裝載計(jì)數(shù)器,最大計(jì)數(shù)65535
● 16位可編程(可以實(shí)時(shí)修改)預(yù)分頻器,計(jì)數(shù)器時(shí)鐘頻率的分頻系數(shù)為1~65536之間的任意數(shù)值
● 8位可配置重復(fù)計(jì)數(shù)
● 支持單筆計(jì)數(shù)模式(OPM),當(dāng)重復(fù)計(jì)數(shù)完成后自動(dòng)停止計(jì)數(shù)器
● 4個(gè)獨(dú)立通道,可分別配置為輸入或輸出模式
● 輸入模式
─ 上升沿/下降沿捕獲
─ PWM脈寬和周期捕獲(需占用兩個(gè)通道)
─ 可選4個(gè)輸入端口之一或1個(gè)外部觸發(fā)端口,支持防抖動(dòng)濾波和預(yù)降頻
● 輸出模式
─ 強(qiáng)制輸出高/低電平
─ 計(jì)數(shù)到比較值時(shí)輸出高/低/翻轉(zhuǎn)電平
─ PWM輸出,可配脈寬和周期
─ 多通道PWM組合輸出,可產(chǎn)生有相互關(guān)系的多路PWM
─ 單脈沖/重觸發(fā)單脈沖模式輸出
● 主從模式
─ 支持多GPT互連,可在作為主設(shè)備產(chǎn)生控制信號(hào)的同時(shí),作為從設(shè)備被外部輸入或其它主設(shè)備控制
─ 控制模式包括復(fù)位、觸發(fā)、門控等
─ 支持多GPT同步啟動(dòng)、復(fù)位等
● 編碼模式輸入,控制計(jì)數(shù)器向上/向下計(jì)數(shù)
● 如下事件發(fā)生時(shí)產(chǎn)生中斷/DMA:
─ 更新:計(jì)數(shù)器向上溢出/向下溢出,計(jì)數(shù)器初始化(通過軟件或者內(nèi)部/外部觸發(fā))
─ 觸發(fā)事件(計(jì)數(shù)器啟動(dòng)、停止、初始化或者由內(nèi)部/外部觸發(fā)計(jì)數(shù))
─ 輸入捕獲
─ 輸出比較

SF32LB55X/56/58X的HCPU有兩個(gè)GPT,分別是GPT1和GPT2,LCPU有三個(gè)GPT,分別是GPT3,GPT4和GPT5。

GPT的接口

主要分成以下幾組:

  • 時(shí)鐘的基本函數(shù),包括初始化,啟動(dòng),停止
  • 利用時(shí)鐘輸出電平
  • 利用時(shí)鐘輸出波形 (PWM)
  • 利用時(shí)鐘采集輸出電平
  • 利用時(shí)鐘生成脈沖 GPT的詳細(xì)接口,請(qǐng)參考Hardware Timer

使用GPT

以下是GPT基本函數(shù)的使用:

{
GPT_HandleTypeDef TIM_Handle = {0};
TIM_Handle.Instance = GPTIM1; // Use GPTIM1
TIM_Handle.Init.Prescaler = HAL_RCC_GetPCLKFreq(GPTIM1_CORE, 1) / 1000 - 1; // Set prescaler
TIM_Handle.core = GPTIM1_CORE; // Clock source is from GPTIM1_CORE
TIM_Handle.Init.CounterMode = GPT_COUNTERMODE_DOWN; // Count down
TIM_Handle.Init.RepetitionCounter = 0; // One shot
HAL_GPT_Base_Init(&TIM_Handle); // Initialize Timer
HAL_NVIC_SetPriority(GPTIM1_IRQn, 3, 0); // Set the TIMx priority
HAL_NVIC_EnableIRQ(GPTIM1_IRQn); // Enable the TIMx global Interrupt
__HAL_GPT_SET_AUTORELOAD(&TIM_Handle, 1500); // Set timeout counter, based on Prescaler, it is 1.5 second
__HAL_GPT_SET_MODE(&TIM_Handle,GPT_OPMODE_SINGLE); // Set timer to single mode
HAL_GPT_Base_Start_IT(&TIM_Handle); // Start timer.
...
}
void GPTIM1_IRQHandler(void)
{
HAL_GPT_IRQHandler(&TIM_Handle);
}
{
printf("Timeout\n");
}

以下是GPT PWM的使用, 在rtos/rtthread/bsp/drv_pwm.c中還有更多的PWM的使用可以作為參考。

GPT_HandleTypeDef TIM_Handle = {0};
GPT_OC_InitTypeDef oc_config = {0};
GPT_ClockConfigTypeDef clock_config = {0};
TIM_Handle.Init.Prescaler = 0;
TIM_Handle.Init.CounterMode = GPT_COUNTERMODE_UP;
TIM_Handle.Init.Period = 0;
HAL_GPT_Base_Init(&TIM_Handle); // Initialize GPT handle
clock_config.ClockSource = GPT_CLOCKSOURCE_INTERNAL;
HAL_GPT_ConfigClockSource(&TIM_Handle, &clock_config) != HAL_OK) // Configure the clock source
HAL_GPT_PWM_Init(&TIM_Handle); // Initialize for PWM
oc_config.OCMode = GPT_OCMODE_PWM1;
oc_config.Pulse = 0;
oc_config.OCPolarity = GPT_OCPOLARITY_HIGH;
oc_config.OCFastMode = GPT_OCFAST_DISABLE;
HAL_GPT_PWM_ConfigChannel(tim, &oc_config, GPT_CHANNEL_1); // Configure PWM output to channel 1
__HAL_GPT_SET_AUTORELOAD(htim, period - 1); // Configure duty cycle number
HAL_GPT_GenerateEvent(htim, GPT_EVENTSOURCE_UPDATE); // Update frequency value
HAL_GPT_PWM_Start(htim, GPT_CHANNEL_1); // Start PWM
HAL_OK
@ HAL_OK
Definition: bf0_hal_def.h:75
__HAL_GPT_SET_MODE
#define __HAL_GPT_SET_MODE(__HANDLE__, __MODE__)
Set the TIM single mode.
Definition: bf0_hal_tim.h:1140
HAL_GPT_GenerateEvent
HAL_StatusTypeDef HAL_GPT_GenerateEvent(GPT_HandleTypeDef *htim, uint32_t EventSource)
Generate a software event.
GPT_ClockConfigTypeDef::ClockSource
uint32_t ClockSource
Definition: bf0_hal_tim.h:224
HAL_RCC_GetPCLKFreq
uint32_t HAL_RCC_GetPCLKFreq(int core_id, int is_pclk1)
Get PCLK freq.
HAL_GPT_Base_Init
HAL_StatusTypeDef HAL_GPT_Base_Init(GPT_HandleTypeDef *htim)
Initializes the TIM Time base Unit according to the specified parameters in the GPT_HandleTypeDef and...
GPT_Base_InitTypeDef::CounterMode
uint32_t CounterMode
Definition: bf0_hal_tim.h:79
GPT_OC_InitTypeDef::OCPolarity
uint32_t OCPolarity
Definition: bf0_hal_tim.h:108
HAL_GPT_Base_Start_IT
HAL_StatusTypeDef HAL_GPT_Base_Start_IT(GPT_HandleTypeDef *htim)
Starts the TIM Base generation in interrupt mode.
GPT_OC_InitTypeDef::OCFastMode
uint32_t OCFastMode
Definition: bf0_hal_tim.h:115
GPT_ClockConfigTypeDef
Clock Configuration Handle Structure definition.
Definition: bf0_hal_tim.h:223
GPT_HandleTypeDef
TIM Time Base Handle Structure definition.
Definition: bf0_hal_tim.h:318
HAL_NVIC_SetPriority
void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
Set the priority of an interrupt.
GPT_OC_InitTypeDef::Pulse
uint32_t Pulse
Definition: bf0_hal_tim.h:105
HAL_GPT_ConfigClockSource
HAL_StatusTypeDef HAL_GPT_ConfigClockSource(GPT_HandleTypeDef *htim, GPT_ClockConfigTypeDef *sClockSourceConfig)
Configures the clock source to be used.
GPT_Base_InitTypeDef::RepetitionCounter
uint32_t RepetitionCounter
Definition: bf0_hal_tim.h:86
HAL_GPT_PWM_ConfigChannel
HAL_StatusTypeDef HAL_GPT_PWM_ConfigChannel(GPT_HandleTypeDef *htim, GPT_OC_InitTypeDef *sConfig, uint32_t Channel)
Initializes the TIM PWM channels according to the specified parameters in the GPT_OC_InitTypeDef.
__HAL_GPT_SET_AUTORELOAD
#define __HAL_GPT_SET_AUTORELOAD(__HANDLE__, __AUTORELOAD__)
Sets the TIM Autoreload Register value on runtime without calling another time any Init function.
Definition: bf0_hal_tim.h:1220
HAL_NVIC_EnableIRQ
void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
Enable a device specific interrupt in the NVIC interrupt controller.
HAL_GPT_PeriodElapsedCallback
void HAL_GPT_PeriodElapsedCallback(GPT_HandleTypeDef *htim)
HW timer periodical timeout call back.
GPT_OC_InitTypeDef::OCMode
uint32_t OCMode
Definition: bf0_hal_tim.h:102
GPT_Base_InitTypeDef::Period
uint32_t Period
Definition: bf0_hal_tim.h:82
GPT_HandleTypeDef::core
uint8_t core
Definition: bf0_hal_tim.h:325
HAL_GPT_IRQHandler
void HAL_GPT_IRQHandler(GPT_HandleTypeDef *htim)
This function handles TIM interrupts requests.
GPT_HandleTypeDef::Init
GPT_Base_InitTypeDef Init
Definition: bf0_hal_tim.h:320
HAL_GPT_PWM_Init
HAL_StatusTypeDef HAL_GPT_PWM_Init(GPT_HandleTypeDef *htim)
Initializes the TIM PWM Time Base according to the specified parameters in the GPT_HandleTypeDef and ...
HAL_GPT_PWM_Start
HAL_StatusTypeDef HAL_GPT_PWM_Start(GPT_HandleTypeDef *htim, uint32_t Channel)
Starts the PWM signal generation.
GPT_OC_InitTypeDef
TIM Output Compare Configuration Structure definition.
Definition: bf0_hal_tim.h:101
GPT_Base_InitTypeDef::Prescaler
uint32_t Prescaler
Definition: bf0_hal_tim.h:76
GPT_HandleTypeDef::Instance
GPT_TypeDef * Instance
Definition: bf0_hal_tim.h:319