0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

英飛凌Psoc6-evaluationkit-062S2測(cè)評(píng)2_定時(shí)器中斷和PWM

冬至子 ? 來源:harry_oceana ? 作者:harry_oceana ? 2023-08-08 16:52 ? 次閱讀

定時(shí)器

使用定時(shí)器翻轉(zhuǎn)LED電平

使能TIM1

1.jpg

使用硬件定時(shí)器,使能定時(shí)器后,需要主動(dòng)添加構(gòu)建

cyhal_pwm.c/cyhal_tcpwm_common.c/cy_tcpwm_counter.c 三個(gè)文件否則會(huì)出現(xiàn)函數(shù)未定義錯(cuò)誤
#define LED_PIN1 GET_PIN(0, 0)
#define LED_PIN2 GET_PIN(0, 1)
#define HWTIMER_DEV_NAME "time1" /* 定時(shí)器名稱 /
rt_device_t hw_dev; /
定時(shí)器設(shè)備句柄 /
rt_hwtimer_mode_t mode; /
定時(shí)器模式 /
rt_uint32_t freq = 10000; /
計(jì)數(shù)頻率 /
/
定時(shí)器超時(shí)回調(diào)函數(shù) /
static rt_err_t timeout_cb(rt_device_t dev, rt_size_t size)
{
static uint8_t state = 0;
if (state == 0)
{
state = 1;
rt_pin_write(LED_PIN1, PIN_HIGH);
rt_pin_write(LED_PIN2, PIN_LOW);
}
else {
state = 0;
rt_pin_write(LED_PIN2, PIN_HIGH);
rt_pin_write(LED_PIN1, PIN_LOW);
}
rt_kprintf("this is hwtimer timeout callback fucntion!n");
rt_kprintf("tick is :%d !n", rt_tick_get());
return 0;
}
int main(void)
{
rt_err_t ret = RT_EOK;
rt_hwtimerval_t timeout_s; /
定時(shí)器超時(shí)值 /
rt_device_t hw_dev = RT_NULL; /
定時(shí)器設(shè)備句柄 /
rt_hwtimer_mode_t mode; /
定時(shí)器模式 /
rt_uint32_t freq = 10000; /
計(jì)數(shù)頻率 /
/
初始化LED引腳*/
rt_pin_mode(LED_PIN1, PIN_MODE_OUTPUT);
rt_pin_mode(LED_PIN2, PIN_MODE_OUTPUT);
/* 查找定時(shí)器設(shè)備 /
hw_dev = rt_device_find(HWTIMER_DEV_NAME);
if (hw_dev == RT_NULL)
{
rt_kprintf("hwtimer sample run failed! can't find %s device!n", HWTIMER_DEV_NAME);
return RT_ERROR;
}
/
以讀寫方式打開設(shè)備 /
ret = rt_device_open(hw_dev, RT_DEVICE_OFLAG_RDWR);
if (ret != RT_EOK)
{
rt_kprintf("open %s device failed!n", HWTIMER_DEV_NAME);
return ret;
}
/
設(shè)置超時(shí)回調(diào)函數(shù) /
rt_device_set_rx_indicate(hw_dev, timeout_cb);
/
設(shè)置計(jì)數(shù)頻率(若未設(shè)置該項(xiàng),默認(rèn)為1Mhz 或 支持的最小計(jì)數(shù)頻率) /
rt_device_control(hw_dev, HWTIMER_CTRL_FREQ_SET, &freq);
/
設(shè)置模式為周期性定時(shí)器(若未設(shè)置,默認(rèn)是HWTIMER_MODE_ONESHOT)/
mode = HWTIMER_MODE_PERIOD;
ret = rt_device_control(hw_dev, HWTIMER_CTRL_MODE_SET, &mode);
if (ret != RT_EOK)
{
rt_kprintf("set mode failed! ret is :%dn", ret);
return ret;
}
/
設(shè)置定時(shí)器超時(shí)值為5s并啟動(dòng)定時(shí)器 /
timeout_s.sec = 0; /
/
timeout_s.usec = 100000; /
微秒 /
if (rt_device_write(hw_dev, 0, &timeout_s, sizeof(timeout_s)) != sizeof(timeout_s))
{
rt_kprintf("set timeout value failedn");
return RT_ERROR;
}
/
延時(shí)3500ms /
rt_thread_mdelay(3500);
/
讀取定時(shí)器當(dāng)前值 */
rt_device_read(hw_dev, 0, &timeout_s, sizeof(timeout_s));
rt_kprintf("Read: Sec = %d, Usec = %dn", timeout_s.sec, timeout_s.usec);
for(;;)
return 0;
}
PWM
在led0上實(shí)現(xiàn)呼吸燈效果
默認(rèn)的pwm0只有通道3,沒有通道0,需要通過修改Kconfig文件來實(shí)現(xiàn)通道0

修改KCONFIG文件,增加PWM0通道0
PWM0通道0對(duì)應(yīng)LED1

1.jpg

使能pwm0 CH0

1.jpg

在drv_pwm.h中添加通道信息

1.jpg

#define LED_PIN GET_PIN(0, 0)
#define PWM_DEV_NAME "pwm0" /* PWM設(shè)備名稱 /
#define PWM_DEV_CHANNEL 0 /
PWM通道 */
struct rt_device_pwm pwm_dev; / PWM設(shè)備句柄 /
int main(void)
{
// rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT);
rt_uint32_t period, pulse, dir;
period = 500000; /
周期為0.5ms,單位為納秒ns /
dir = 1; /
PWM脈沖寬度值的增減方向 /
pulse = 0; /
PWM脈沖寬度值,單位為納秒ns /
/
查找設(shè)備 */
pwm_dev = (struct rt_device_pwm )rt_device_find(PWM_DEV_NAME);
if (pwm_dev == RT_NULL)
{
rt_kprintf("pwm sample run failed! can't find %s device!n", PWM_DEV_NAME);
return RT_ERROR;
}
/
設(shè)置PWM周期和脈沖寬度默認(rèn)值 /
rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period, pulse);
/
使能設(shè)備 /
rt_pwm_enable(pwm_dev, PWM_DEV_CHANNEL);
while (1)
{
rt_thread_mdelay(50);
if (dir)
{
pulse += 12500; /
從0值開始每次增加5000ns /
}
else
{
pulse -= 12500; /
從最大值開始每次減少5000ns /
}
if (pulse >= period)
{
dir = 0;
}
if (0 == pulse)
{
dir = 1;
}
/
設(shè)置PWM周期和脈沖寬度 */
rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period, pulse);
}
}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • LED電平
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    6180
  • PWM波
    +關(guān)注

    關(guān)注

    0

    文章

    99

    瀏覽量

    16791
  • 定時(shí)器中斷
    +關(guān)注

    關(guān)注

    0

    文章

    49

    瀏覽量

    11142
  • 呼吸燈
    +關(guān)注

    關(guān)注

    10

    文章

    108

    瀏覽量

    42638
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1239

    瀏覽量

    39441
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用PSoc 62系列板卡時(shí)遇到了無法燒錄和調(diào)試的問題如何解決?

    我的板卡型號(hào)是Psoc6-evaluationkit-062S2我的板卡型號(hào)是 Psoc6-evaluationkit-062S2。 1.在 RTT Studio 中可以正常燒錄,但無法調(diào)試
    發(fā)表于 05-29 06:06

    PSoC6-CY8CKIT-062S2-43012開發(fā)板簡介

    簡介PSoC6-CY8CKIT-062S2-43012 是英飛凌推出的一款32位雙核CPU子系統(tǒng)( ARM Cortex-M4 和 ARM Cortex-M0)的開發(fā)板,具有單周期乘法
    發(fā)表于 10-14 11:08

    【資料下載】英飛凌PSoC 6 RTT物聯(lián)網(wǎng)開發(fā)板

    Psoc6-evaluationkit-062S2 是 RT-Thread 聯(lián)合英飛凌推出的一款集成32位雙核CPU子系統(tǒng)( ARM Cortex-M4 和 ARM Cortex-M0)的開發(fā)板,其具有單周期
    發(fā)表于 04-13 13:38

    英飛凌PSoC 6 RTT開發(fā)板試用】

    首先感謝發(fā)燒友、RT-Thread和英飛凌! 一、開箱 Psoc6-evaluationkit-062S2 是 RT-Thread 聯(lián)合英飛凌推出的一款集成32位雙核CPU子系統(tǒng)( ARM
    發(fā)表于 05-30 20:47

    英飛凌PSoC 6 RTT開發(fā)板試用】以搭積木方式實(shí)現(xiàn)簡單的互聯(lián)型家庭網(wǎng)關(guān)

    本文基于RT-Studio,采用搭積木的方式實(shí)現(xiàn)一個(gè)簡單的互聯(lián)型家庭網(wǎng)關(guān),采集各類傳感數(shù)據(jù)并傳輸至云端。硬件除了Psoc6-evaluationkit-062S2開發(fā)板之外,還有一塊RW007
    發(fā)表于 05-31 22:19

    英飛凌PSoC 6 RTT開發(fā)板試用】+開箱測(cè)試

    英飛凌PSoC 6 RTT開發(fā)板試用】+開箱測(cè)試 硬件資源介紹 Psoc6-evaluationkit-062S2 是 RT-Thread 聯(lián)合
    發(fā)表于 06-05 01:06

    C51編程15-中斷篇(定時(shí)器中斷2

    使用定時(shí)器/計(jì)數(shù)中斷,需要將滿足以下的條件。 1)中斷總允許打開 EA = 1; 2中斷源允
    發(fā)表于 11-23 17:51 ?6次下載
    C51編程15-<b class='flag-5'>中斷</b>篇(<b class='flag-5'>定時(shí)器</b><b class='flag-5'>中斷</b><b class='flag-5'>2</b>)

    STM32CubeMX_定時(shí)器中斷_PWM

    中斷PWM的使用. 仍用NUCLEO-F767ZI的板子, 使用定時(shí)器3的中斷實(shí)現(xiàn)LED2(Blue, PB7)的翻轉(zhuǎn), 然后剛好LED
    發(fā)表于 12-05 13:51 ?13次下載
    STM32CubeMX_<b class='flag-5'>定時(shí)器</b><b class='flag-5'>中斷</b>_<b class='flag-5'>PWM</b>

    RT-Thread文檔_英飛凌 Psoc6-CY8CKIT-062S2-43012上手指南

    RT-Thread文檔_英飛凌 Psoc6-CY8CKIT-062S2-43012 上手指南
    發(fā)表于 02-22 18:27 ?3次下載
    RT-Thread文檔_<b class='flag-5'>英飛凌</b> <b class='flag-5'>Psoc6-CY8CKIT-062S2</b>-43012上手指南

    基于RT-Thread的家庭智能家居系統(tǒng)的控制平臺(tái)設(shè)計(jì)

    這個(gè)系統(tǒng)是在英飛凌Psoc6-evaluationkit-062S2開發(fā)板的基礎(chǔ)上,充分利用了RT-Thread實(shí)時(shí)操作系統(tǒng)強(qiáng)大的功能及豐富的軟件生態(tài),驅(qū)動(dòng)ESP8266、OLED屏幕和DHT11模塊等,實(shí)現(xiàn)溫濕度的采集、中英文字符的顯示和與中國移動(dòng)OneNET平臺(tái)的通信
    發(fā)表于 07-18 16:23 ?886次閱讀
    基于RT-Thread的家庭智能家居系統(tǒng)的控制平臺(tái)設(shè)計(jì)

    基于PSOC6開發(fā)板構(gòu)建的智能小車

    本項(xiàng)目是基于Psoc6-evaluationkit-062S2開發(fā)板構(gòu)建的智能小車。該開發(fā)板由RT-Thread與英飛凌聯(lián)合推出,集成了一顆32位雙核CPU子系統(tǒng),包括150MHz的ARM
    發(fā)表于 07-28 15:14 ?677次閱讀
    基于<b class='flag-5'>PSOC6</b>開發(fā)板構(gòu)建的智能小車

    如何設(shè)計(jì)一種基于PSOC6的人體交互式智能家居系統(tǒng)呢?

    Psoc6-evaluationkit-062S2 是 RT-Thread 聯(lián)合英飛凌推出的一款集成 32 位雙核 CPU 子系統(tǒng)( ARM Cortex-M4 和 ARM Cortex-M0
    的頭像 發(fā)表于 07-28 16:02 ?938次閱讀
    如何設(shè)計(jì)一種基于<b class='flag-5'>PSOC6</b>的人體交互式智能家居系統(tǒng)呢?

    英飛凌Psoc6-evaluationkit-062S2測(cè)評(píng)1_LED

    Psoc6-evaluationkit-062S2開發(fā)板使用DAP_LINK方式下載,開發(fā)板有兩個(gè)芯片,其中一塊芯片用作DAP_LINK下載,在安裝好插件的前提下,可以直接通過DAP_TYPEC下載
    發(fā)表于 08-08 17:18 ?510次閱讀
    <b class='flag-5'>英飛凌</b><b class='flag-5'>Psoc6-evaluationkit-062S2</b><b class='flag-5'>測(cè)評(píng)</b>1_LED

    RA2E1定時(shí)器帶死區(qū)互補(bǔ)PWM中斷延時(shí)問題分析

    RA2E1定時(shí)器帶死區(qū)互補(bǔ)PWM中斷延時(shí)問題分析
    的頭像 發(fā)表于 10-27 10:56 ?644次閱讀
    RA<b class='flag-5'>2</b>E1<b class='flag-5'>定時(shí)器</b>帶死區(qū)互補(bǔ)<b class='flag-5'>PWM</b><b class='flag-5'>中斷</b>延時(shí)問題分析

    英飛凌測(cè)評(píng)英飛凌PSoC? 62開發(fā)板試用報(bào)告-LCD ILI9341 8080 DEMO

    介紹 `Psoc6-evaluationkit-062S2` 是 RT-Thread 聯(lián)合英飛凌推出的一款集成32位雙核CPU子系統(tǒng)( ARM Cortex-M4 和 ARM Cortex-M0
    的頭像 發(fā)表于 03-07 21:07 ?560次閱讀
    【<b class='flag-5'>英飛凌</b><b class='flag-5'>測(cè)評(píng)</b>】<b class='flag-5'>英飛凌</b><b class='flag-5'>PSoC</b>? 62開發(fā)板試用報(bào)告-LCD ILI9341 8080 DEMO