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

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

GPTim(通用定時器)和 LPTim(低功耗定時器)可以在 PWM 模式下工作,用于硬件定時器:

  • 通用定時器(GPTim) GPTim 為系統(tǒng) PCLK 實現(xiàn)了一個 16 位計數(shù)器,提供 1-65536 分頻器。 它有4個輸入/輸出通道。 GPTim 可用于 PWM 以生成波形信號或測量輸入信號。
  • 低功耗定時器(LPTim) LPTim 為系統(tǒng) PCLK 或低功耗時鐘實現(xiàn) 16 位計數(shù)器,提供 1-128 分頻器。 LPTim 可用于 PWM 以生成波形信號。

硬件PWM驅(qū)動包括兩層:硬件訪問層(HAL)和RT-Thread的適配層。
HAL 提供了用于訪問硬件定時器外設(shè)寄存器的基本 API。 有關(guān)詳細信息,請參閱硬件計時器 HAL 的 API 文檔。
適配層提供對 RT-Thread 驅(qū)動框架的支持。 用戶可以使用 RT-Thread POSIX 驅(qū)動程序接口進行 PWM 編程。 pwm3、pwm4 和 pwmlp1 和 pwmlp3 等的設(shè)備名稱在 menuconfig 中配置。

驅(qū)動配置

硬件驅(qū)動程序可以使用 PWM(使用 GPTim)外設(shè)的多個實例。 它可以使用 menuconfig 工具為每個項目選擇,通常保存在 C 頭文件中。 默認情況下,配置保存為 rtconfig.h。

以下示例顯示了在一個項目頭文件中定義的標志,該項目使用 PWM3、PWM4、LPTIM3。

#define RT_USING_PWM
#define BSP_USING_PWM
#define BSP_USING_PWM3
#define BSP_USING_PWM3_CH1
#define BSP_USING_PWM3_CH2
#define BSP_USING_PWM3_CH3
#define BSP_USING_PWM3_CH4
#define BSP_USING_PWM4
#define BSP_USING_PWM4_CH1
#define BSP_USING_PWM4_CH2
#define BSP_USING_PWM4_CH3
#define BSP_USING_PWM4_CH4
#define BSP_USING_PWM_LPTIM3

配置完成后,用戶需要在所有需要訪問驅(qū)動程序的源代碼中包含頭文件。

使用硬件定時器

適配器層注冊 RT-Thread 請求的硬件支持功能,并使用 HAL 實現(xiàn)這些功能。 對于 Hareware Timer HAL 公開的 API,請參考 Hardware Timer 和 Low power hardware timer。 詳情。 對于使用 RT-Thread 的用戶,可以使用以下代碼作為示例:

// Find and open device
rt_device_t rt_device_find(const char *name);
name: pwmlp1 / pwmlp3 / pwm3 / pwm4 ...
// Set
rt_err_t rt_pwm_set(struct rt_device_pwm *device, int channel, rt_uint32_t period, rt_uint32_t pulse);
channel: 1-4 for GPTim, ignored for LPTim
period: unit:ns 1ns~4.29s:1Ghz~0.23hz
pulse: unit:ns (pulse<=period)
// Start & Stop
rt_err_t rt_pwm_enable(struct rt_device_pwm *device, int channel);
rt_err_t rt_pwm_disable(struct rt_device_pwm *device, int channel);
// example
void spi_trans_test()
{
struct rt_device_pwm *device = RT_NULL;
device = (struct rt_device_pwm *)rt_device_find("pwm3");
if (!device)
{
return;
}
rt_pwm_set(device, 1, 500000000, 250000000);
rt_pwm_enable(device, 1);
......
rt_pwm_disable(device, 1);
}