 |
思澈科技軟件開發(fā)工具包
2.20
|
|
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ù)的使用:
{
TIM_Handle.
core = GPTIM1_CORE;
...
}
void GPTIM1_IRQHandler(void)
{
}
{
printf("Timeout\n");
}
以下是GPT PWM的使用, 在rtos/rtthread/bsp/drv_pwm.c中還有更多的PWM的使用可以作為參考。
oc_config.
OCMode = GPT_OCMODE_PWM1;
@ HAL_OK
Definition: bf0_hal_def.h:75
#define __HAL_GPT_SET_MODE(__HANDLE__, __MODE__)
Set the TIM single mode.
Definition: bf0_hal_tim.h:1140
HAL_StatusTypeDef HAL_GPT_GenerateEvent(GPT_HandleTypeDef *htim, uint32_t EventSource)
Generate a software event.
uint32_t ClockSource
Definition: bf0_hal_tim.h:224
uint32_t HAL_RCC_GetPCLKFreq(int core_id, int is_pclk1)
Get PCLK freq.
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...
uint32_t CounterMode
Definition: bf0_hal_tim.h:79
uint32_t OCPolarity
Definition: bf0_hal_tim.h:108
HAL_StatusTypeDef HAL_GPT_Base_Start_IT(GPT_HandleTypeDef *htim)
Starts the TIM Base generation in interrupt mode.
uint32_t OCFastMode
Definition: bf0_hal_tim.h:115
Clock Configuration Handle Structure definition.
Definition: bf0_hal_tim.h:223
TIM Time Base Handle Structure definition.
Definition: bf0_hal_tim.h:318
void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
Set the priority of an interrupt.
uint32_t Pulse
Definition: bf0_hal_tim.h:105
HAL_StatusTypeDef HAL_GPT_ConfigClockSource(GPT_HandleTypeDef *htim, GPT_ClockConfigTypeDef *sClockSourceConfig)
Configures the clock source to be used.
uint32_t RepetitionCounter
Definition: bf0_hal_tim.h:86
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.
#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
void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
Enable a device specific interrupt in the NVIC interrupt controller.
void HAL_GPT_PeriodElapsedCallback(GPT_HandleTypeDef *htim)
HW timer periodical timeout call back.
uint32_t OCMode
Definition: bf0_hal_tim.h:102
uint32_t Period
Definition: bf0_hal_tim.h:82
uint8_t core
Definition: bf0_hal_tim.h:325
void HAL_GPT_IRQHandler(GPT_HandleTypeDef *htim)
This function handles TIM interrupts requests.
GPT_Base_InitTypeDef Init
Definition: bf0_hal_tim.h:320
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_StatusTypeDef HAL_GPT_PWM_Start(GPT_HandleTypeDef *htim, uint32_t Channel)
Starts the PWM signal generation.
TIM Output Compare Configuration Structure definition.
Definition: bf0_hal_tim.h:101
uint32_t Prescaler
Definition: bf0_hal_tim.h:76
GPT_TypeDef * Instance
Definition: bf0_hal_tim.h:319