哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南之使用GPT輸入捕獲進行脈寬和周期測量實驗

瑞薩嵌入式小百科 ? 來源:野火電子 ? 2026-04-24 10:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

27.8

實驗3:輸入捕獲——脈寬和周期測量

上一個實驗使用了GPT的輸出功能,本次實驗要使用GPT的輸入功能,通過GPT的輸入捕獲進行脈寬和周期測量。其測量的原理如下圖所示。

0871bdaa-3e01-11f1-90a1-92fbcf53809c.png

首先啟動GPT定時器,在上升沿A處進行捕獲,記此時時間為A;緊接著在下降沿B處進行捕獲,記此時時間為B;最后再次在上升沿C處進行捕獲,記此時時間為C或者A’。設(shè)PWM的周期為T,占空比為D,頻率為f,則:

09274814-3e01-11f1-90a1-92fbcf53809c.png

27.8.1

硬件設(shè)計

以野火啟明6M5開發(fā)板為例,本實驗使用P600和P603這兩個引腳,P600用于輸出PWM信號,P603用于輸入捕獲。將P600與P603使用杜邦線連接,引腳在引出排針處,如下圖所示。

0991cbee-3e01-11f1-90a1-92fbcf53809c.png

野火啟明6M5開發(fā)板例程選用的PWM輸出引腳為:P600(GTIOC6B);選用的輸入捕獲引腳為:P603(GTIOC7A)。

野火啟明4M2開發(fā)板例程選用的PWM輸出引腳為:P405(GTIOC1A);選用的輸入捕獲引腳為:P414(GTIOC0B)。

野火啟明2L1開發(fā)板例程選用的PWM輸出引腳為:P115(GTIOC4A);選用的輸入捕獲引腳為:P113(GTIOC2A)。

本次實驗需要將PWM輸出引腳與輸入捕獲引腳使用杜邦線連接起來。

27.8.2

軟件設(shè)計

27.8.2.1

新建工程

由于本實驗的目標是測量PWM的周期、占空比,因此我們在上一個實驗的基礎(chǔ)上修改程序。

對于e2studio開發(fā)環(huán)境:拷貝一份我們之前的e2s工程“27_GPT_PWM_Output”,然后將工程文件夾重命名為“27_GPT_Input_Capture”,最后再將它導(dǎo)入到我們的e2studio工作空間中。

對于Keil開發(fā)環(huán)境:拷貝一份我們之前的Keil工程“27_GPT_PWM_Output”,然后將工程文件夾重命名為“27_GPT_Input_Capture”,并進入該文件夾里面雙擊Keil工程文件,打開該工程。

工程新建好之后,在工程根目錄的“src/gpt”路徑下面,新建源文件和頭文件:

bsp_gpt_input_capture.c

bsp_gpt_input_capture.h

工程文件結(jié)構(gòu)如下:

列表9:文件結(jié)構(gòu)

左右滑動查看完整內(nèi)容

27_GPT_Input_Capture
├─ ......
└─ src
 ├─ led
 │ ├─ bsp_led.c
 │ └─ bsp_led.h
 ├─ debug_uart
 │ ├─ bsp_debug_uart.c
 │ └─ bsp_debug_uart.h
 ├─ gpt
 │ ├─ bsp_gpt_pwm_output.c
 │ ├─ bsp_gpt_pwm_output.h
 │ ├─ bsp_gpt_input_capture.c//新增文件
 │ └─ bsp_gpt_input_capture.h//新增文件
 └─ hal_entry.c

27.8.2.2

FSP配置

下面以野火啟明6M5開發(fā)板為例來講解相關(guān)的FSP配置。

由于在上一個實驗中我們已經(jīng)配置好了P600用于輸出PWM信號,因此本實驗中只需要添加輸入捕獲需要使用到IO引腳P603,需要在“Pins”配置頁面中配置GPT7所使用的引腳。

09f54c28-3e01-11f1-90a1-92fbcf53809c.png

在“Stacks”配置頁面中加入GPT,按如下圖所示的配置進行設(shè)置。需要注意的是,因為“Input”里面的各類配置項目若是展開來的話篇幅比較長,因此在圖中并未展開出來,我們要注意勾上以下幾個選項:

展開Input->Capture ASource并勾上(在GTIOCA的上升沿啟用輸入捕獲A,無論GTIOCB引腳是:

–GTIOCA Rising Edge While GTIOCB Low

–GTIOCA Rising Edge While GTIOCB High

展開Input->Capture BSource并勾上(在GTIOCA的下降沿啟用輸入捕獲B,無論GTIOCB引腳是:

–GTIOCA Falling Edge While GTIOCB Low

–GTIOCA Falling Edge While GTIOCB High

0a51d966-3e01-11f1-90a1-92fbcf53809c.png

點擊可查看大圖

GPT的“Input”選項卡的屬性描述:

表7:GPT屬性描述:“Input”

0ad05124-3e01-11f1-90a1-92fbcf53809c.png

點擊可查看大圖

27.8.2.3

GPT初始化

初始化GPT模塊用于輸入捕獲的函數(shù)如下。在這個函數(shù)中,我們先初始化GPT模塊,然后調(diào)用R_GPT_Info Get函數(shù)獲取GPT的配置信息,主要是為了獲取計數(shù)器的計數(shù)周期,即GPT一個周期的計數(shù)次數(shù),并保存到全局變量period中。

最后使能輸入捕獲,并啟動GPT定時器。

列表10:GPT初始化

左右滑動查看完整內(nèi)容

timer_info_t info;//用于獲取定時器參數(shù)信息
uint32_t period;//輸入捕獲計數(shù)器的計數(shù)周期
/* GPT 初始化函數(shù)*/
voidGPT_InputCapture_Init(void)
{
 /* 初始化GPT 模塊*/
 R_GPT_Open(&g_timer_gpt7_ctrl, &g_timer_gpt7_cfg);
 /* 獲取當前參數(shù)*/
  (void)R_GPT_InfoGet(&g_timer_gpt7_ctrl, &info);
 /* 獲取計數(shù)周期:GPT 的一個周期的計數(shù)次數(shù)*/
  period = info.period_counts;
 /* 使能輸入捕獲*/
 R_GPT_Enable(&g_timer_gpt7_ctrl);
 /* 啟動GPT 定時器*/
 R_GPT_Start(&g_timer_gpt7_ctrl);
}

27.8.2.4

GPT中斷回調(diào)函數(shù)

GPT輸入捕獲中斷回調(diào)函數(shù)如下。

列表11:GPT中斷回調(diào)函數(shù)

滑動查看完整內(nèi)容

/* 保存所測量的PWM 信號的信息*/
uint32_tpwm_period;//PWM 周期
uint32_tpwm_high_level_time;//PWM 高電平的時間
uint32_tpwm_freq;//PWM 頻率
uint32_tpwm_duty;//PWM 占空比
/* GPT 輸入捕獲中斷回調(diào)函數(shù)*/
voidgpt7_input_capture_callback(timer_callback_args_t* p_args)
{
 staticuint32_ta_time;// A 上升沿捕獲的時間
 staticuint32_tb_time;// B 下降沿捕獲的時間
 staticuint32_tc_time;// C 上升沿捕獲的時間(其實也就是A 可以用A'表示)
 staticuint32_toverflow_times;//計數(shù)器溢出次數(shù)
 staticuint8_tone_period_flag=0;//用于表示是否完成對一個完整周期的測量
 
 
 switch(p_args->event)
  {
   /* 捕獲到上升沿-- 有可能是A 或者C (A') 位置*/
   caseTIMER_EVENT_CAPTURE_A:
     /* A 開始對某個周期進行測量*/
     if(0== one_period_flag)
      {
        a_time = p_args->capture;//記錄捕獲的時間A
        overflow_times =0;//初始化計數(shù)器溢出次數(shù)
        one_period_flag ++;//表示即將完成對某個周期的測量
      }
     /* C (A') 如果測量完了一個周期,則計算PWM 信號周期和高電平的時間*/
     elseif(1== one_period_flag)
      {
        c_time = p_args->capture + overflow_times * period;//記錄捕
        獲的時間C
       //計算PWM 周期
        pwm_period = c_time - a_time;
       //清零所有標志位
        overflow_times =0;
        one_period_flag =0;//標志位清0, 重新進入下一輪的測量
      }
     break;
     
   /* 捕獲到下降沿-- 是B 位置*/
   caseTIMER_EVENT_CAPTURE_B:
     //如果是在測量周期內(nèi)檢測到下降沿
     if(1== one_period_flag)
      {
      b_time = p_args->capture + overflow_times * period;//記錄捕
      獲的時間B
      pwm_high_level_time = b_time - a_time;//計算高電平時間
      }
     break;
     
   /* 定時器計數(shù)溢出事件*/
   caseTIMER_EVENT_CYCLE_END:案件 TIMER_EVENT_CYCLE_END:
     /* 輸入捕獲期間計數(shù)器溢出,則記錄溢出次數(shù)+1 */
      overflow_times++;
     break;
     
   default:
     break;
  }
}

在GPT中斷回調(diào)函數(shù)中,我們使用switch語句判斷觸發(fā)中斷的事件類型。GPT在引腳輸入PWM信號的上升沿觸發(fā)捕獲A事件,在PWM信號的下降沿觸發(fā)捕獲B事件,并在計數(shù)器溢出時觸發(fā)定時器計數(shù)溢出事件。

警告

建議不要在中斷回調(diào)函數(shù)中打印數(shù)據(jù),因為PWM頻率一般很高,而printf函數(shù)執(zhí)行所消耗的時間比較長,可能會阻塞中斷服務(wù)函數(shù)的運行。同時也應(yīng)該時刻注意中斷優(yōu)先級的問題。

27.8.2.5

hal_entry入口函數(shù)

列表12:hal_entry入口函數(shù)

滑動查看完整內(nèi)容

/* 用戶頭文件包含*/
#include"led/bsp_led.h"
#include"debug_uart/bsp_debug_uart.h"
#include"gpt/bsp_gpt_pwm_output.h"
#include"gpt/bsp_gpt_input_capture.h"




// 外部變量聲明
externtimer_info_t info;//用于獲取定時器參數(shù)信息
externuint32_t pwm_period;//PWM 周期
externuint32_t pwm_high_level_time;//PWM 高電平的時間
externuint32_t pwm_freq;//PWM 頻率
externuint32_t pwm_duty;//PWM 占空比




voidhal_entry(void)
{
 /*TODO:add your own code here */
 LED_Init();// LED 初始化
 Debug_UART4_Init();// SCI4 UART 調(diào)試串口初始化
 
 GPT_PWM_Init();// GPT PWM 輸出初始化
 GPT_InputCapture_Init();// GPT 輸入捕獲初始化
 
  printf("這是一個GPT 的PWM 輸出+ 輸入捕獲功能實驗
");
  printf("使用杜邦線連接P600 和P603 引腳,然后打開串口助手查看串口的打印信息

  ,→");
 
 
 while(1)
  {
   /* 計算PWM 的頻率*/
    pwm_freq=info.clock_frequency/pwm_period;
   /* 計算PWM 的占空比*/
    pwm_duty=pwm_high_level_time*100/pwm_period;
   // 打印
    printf("High=%d, Period=%d, ", pwm_high_level_time, pwm_period);
    printf("Friquency = %dHz, Duty_Cycle = %d%%
", pwm_freq, pwm_
    ,→duty);
    pwm_period=pwm_high_level_time=pwm_freq=0;//打印完后舊數(shù)據(jù)清零
   // LED1 閃爍指示程序正在運行...
   LED1_TOGGLE;
   // 間隔1s
   R_BSP_SoftwareDelay(1,BSP_DELAY_UNITS_SECONDS);
  }
 
#ifBSP_TZ_SECURE_BUILD
 /* Enter non-secure code */
 R_BSP_NonSecureEnter();
#endif
}

27.8.3

下載驗證

以野火啟明6M5開發(fā)板為例,編譯并下載程序后,復(fù)位開發(fā)板使程序重新運行,然后使用杜邦線連接P600和P603引腳,然后打開串口助手查看串口的打印信息。串口會打印出PWM信號的頻率和占空比等信息,實驗現(xiàn)象如下圖所示。

0b40add4-3e01-11f1-90a1-92fbcf53809c.png

點擊可查看大圖

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

    關(guān)注

    38

    文章

    22518

    瀏覽量

    91174
  • 定時器
    +關(guān)注

    關(guān)注

    23

    文章

    3373

    瀏覽量

    124493
  • 脈寬
    +關(guān)注

    關(guān)注

    0

    文章

    40

    瀏覽量

    13177
  • GPT
    GPT
    +關(guān)注

    關(guān)注

    0

    文章

    372

    瀏覽量

    16959

原文標題:實驗3:輸入捕獲脈寬和周期測量——瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南(101)

文章出處:【微信號:瑞薩嵌入式小百科,微信公眾號:瑞薩嵌入式小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    RA系列FSP開發(fā)實戰(zhàn)指南I2C讀寫EEPROM實驗

    使用官方提供的FPS進行編程,官方提供的FPS
    的頭像 發(fā)表于 01-27 10:02 ?3770次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>RA</b><b class='flag-5'>系列</b><b class='flag-5'>FSP</b><b class='flag-5'>庫</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>實戰(zhàn)</b><b class='flag-5'>指南</b><b class='flag-5'>之</b>I2C讀寫EEPROM<b class='flag-5'>實驗</b>

    RA系列FSP開發(fā)實戰(zhàn)指南GPT比較匹配功能及輸入捕獲功能詳解

    比較匹配主要是用來實現(xiàn)輸出PWM波形功能的一種機制。其原理簡單來講就是通過比較GTCNT計數(shù)器的值與GTCCRA或GTCCRB的值,當比較匹配發(fā)生時,會生成相應(yīng)的比較匹配事件信號,同時,GPT可以
    的頭像 發(fā)表于 04-20 15:08 ?3626次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>RA</b><b class='flag-5'>系列</b><b class='flag-5'>FSP</b><b class='flag-5'>庫</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>實戰(zhàn)</b><b class='flag-5'>指南</b><b class='flag-5'>之</b><b class='flag-5'>GPT</b>比較匹配功能及<b class='flag-5'>輸入</b><b class='flag-5'>捕獲</b>功能詳解

    RA系列FSP開發(fā)實戰(zhàn)指南使用GPT基本定時功能實驗

    實驗較為簡單,我們將使用GPT定時器進行定時并產(chǎn)生中斷請求觸發(fā)中斷,然后通過這個中斷,切換LED的電平。
    的頭像 發(fā)表于 04-20 15:23 ?4529次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>RA</b><b class='flag-5'>系列</b><b class='flag-5'>FSP</b><b class='flag-5'>庫</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>實戰(zhàn)</b><b class='flag-5'>指南</b><b class='flag-5'>之</b>使用<b class='flag-5'>GPT</b>基本定時功能<b class='flag-5'>實驗</b>

    e2studio(1)----芯片搭建FSP環(huán)境

    視頻教學(xué) 樣品申請 請勿添加外鏈 e2studio軟件 e2studio是的集成開發(fā)環(huán)境,FSP 提供了眾多可提高效率的工具,用于開發(fā)
    發(fā)表于 09-30 15:28

    RA2L1入門學(xué)習(xí)】1. 點亮LED

    參考“RA2L1入門教學(xué)實驗.pdf”進行的,之前使用過STM32CubeIDE和STM32CubeMX軟件,
    發(fā)表于 01-29 22:17

    RA-Eco-RA4M2開發(fā)板評測】+VS Code 下 RA4M2 開發(fā)環(huán)境搭建與 GPIO 點燈實驗教程

    軟件燒錄芯片程序——RA系列FSP開發(fā)
    發(fā)表于 04-15 15:12

    RA4系列開發(fā)板體驗】開發(fā)環(huán)境搭建和新手點燈指南

    RA4系列開發(fā)板體驗】開發(fā)環(huán)境搭建和新手點燈指南
    發(fā)表于 11-24 22:54

    RA4系列開發(fā)板體驗】4. PWM驅(qū)動LED

    之前發(fā)帖:【RA4系列開發(fā)板體驗】1. 新建工程+按鍵控制LED【
    發(fā)表于 12-04 18:23

    RA4系列開發(fā)板體驗】10. 我的試用總結(jié)

    測量搖桿模塊偏移量【RA4系列開發(fā)板體驗】7. 用DAC輸出正弦波以及余弦波【
    發(fā)表于 12-10 22:34

    RA4系列開發(fā)板體驗】體驗過程

    拿到板子之后,做了幾個實驗過程,過程如下:1、在好奇心驅(qū)動下,逐步接觸;參照網(wǎng)上的實例,學(xué)習(xí)開發(fā)環(huán)境一、開箱驗貨二、搭建環(huán)境參考“ 【
    發(fā)表于 12-18 16:20

    M451的PWM如何設(shè)置才能捕獲外部的脈沖,測量寬和周期

    M451的PWM,如何設(shè)置,來捕獲外部的脈沖,測量寬和周期?
    發(fā)表于 06-26 07:16

    【有獎直播預(yù)報名】電子RA系列產(chǎn)品開發(fā)工具FSP4.0.0新特性介紹

    為使用電子RA系列ARM微控制器的嵌入式系統(tǒng)設(shè)計提供簡單易用且可擴展的高質(zhì)量軟件。 直播主題
    的頭像 發(fā)表于 11-22 12:20 ?1700次閱讀

    【視頻教程】RA單片機FSP開發(fā)(3)FSP架構(gòu)-解釋Blinky架構(gòu)[上]

    干貨分享 前篇回顧 【視頻教程】RA單片機FSP開發(fā)(1)環(huán)境搭建(帶RASC) 【視頻教程】
    的頭像 發(fā)表于 12-06 12:15 ?2142次閱讀

    電子RA系列微控制器的可擴展性強的配置軟件包 (FSP)安裝下載與使用指南

    電子RA系列微控制器的可擴展性強的配置軟件包 (FSP)安裝下載與使用指南
    的頭像 發(fā)表于 06-11 17:21 ?2234次閱讀

    RA系列FSP開發(fā)實戰(zhàn)指南使用GPT進行PWM輸出實驗

    本次實驗需要使用到LED燈來展示定時的效果,LED燈具體的電路講解請讀者參考本教程:8.4.實驗:使用寄存器點亮LED燈。
    的頭像 發(fā)表于 04-24 10:45 ?132次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>RA</b><b class='flag-5'>系列</b><b class='flag-5'>FSP</b><b class='flag-5'>庫</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>實戰(zhàn)</b><b class='flag-5'>指南</b><b class='flag-5'>之</b>使用<b class='flag-5'>GPT</b><b class='flag-5'>進行</b>PWM輸出<b class='flag-5'>實驗</b>
    嫩江县| 远安县| 凤凰县| 昭平县| 峨眉山市| 鄂伦春自治旗| 凤冈县| 崇阳县| 太湖县| 维西| 陇川县| 张家界市| 新昌县| 南投市| 定安县| 兴城市| 陕西省| 醴陵市| 高阳县| 四会市| 隆化县| 西林县| 望都县| 德阳市| 岢岚县| 临沧市| 铜山县| 兴仁县| 浑源县| 孟州市| 安塞县| 清水河县| 昭通市| 垣曲县| 宁乡县| 民勤县| 蓬莱市| 湄潭县| 曲阳县| 兰溪市| 连平县|