28.4
實(shí)驗(yàn)1:基本定時(shí)功能
本實(shí)驗(yàn)內(nèi)容適用于野火啟明6M5、啟明4M2、啟明2L1開發(fā)板。本實(shí)驗(yàn)較為簡單,我們將使用AGT定時(shí)器進(jìn)行定時(shí)并觸發(fā)中斷請(qǐng)求產(chǎn)生中斷,然后通過這個(gè)中斷,切換LED的電平。
28.4.1
硬件設(shè)計(jì)
本次實(shí)驗(yàn)需要使用到LED燈來展示定時(shí)的效果,LED燈具體的電路講解請(qǐng)讀者參考本教程“實(shí)驗(yàn):使用寄存器點(diǎn)亮LED燈”小節(jié)的內(nèi)容。
注
本實(shí)驗(yàn)僅用到LED1~3當(dāng)中的其中一盞。
28.4.2
軟件設(shè)計(jì)
26.4.2.1
新建工程
由于本實(shí)驗(yàn)需要用到LED,也會(huì)用到串口打印提示信息,因此我們?cè)谇懊娲?a href="http://m.sdkjxy.cn/v/tag/1301/" target="_blank">通信章節(jié)的“實(shí)驗(yàn)1:UART收發(fā)回顯”例程的基礎(chǔ)上修改程序。
對(duì)于e2studio開發(fā)環(huán)境:拷貝一份我們之前的e2s工程模板“19_UART_Receive_Send”,然后將工程文件夾重命名為“28_AGT_Basic_Timing”,最后再將它導(dǎo)入到我們的e2studio工作空間中。
對(duì)于Keil開發(fā)環(huán)境:拷貝一份我們之前的Keil工程模板“19_UART_Receive_Send”,然后將工程文件夾重命名為“28_AGT_Basic_Timing”,并進(jìn)入該文件夾里面雙擊Keil工程文件,打開該工程。
工程新建好之后,在工程根目錄的“src”文件夾下面新建“agt”文件夾,再進(jìn)入“agt”文件夾里面新建源文件和頭文件:“bsp_agt_timing.c”和“bsp_agt_timing.h”。工程文件結(jié)構(gòu)如下。
列表1:文件結(jié)構(gòu)
左右滑動(dòng)查看完整內(nèi)容
28_AGT_Basic_Timing ├─ ...... └─src ├─ led │ ├─ bsp_led.c │ └─ bsp_led.h ├─ debug_uart │ ├─ bsp_debug_uart.c │ └─ bsp_debug_uart.h ├─ agt │ ├─ bsp_agt_timing.c │ └─ bsp_agt_timing.h └─ hal_entry.c
26.4.2.2
FSP配置
首先打開FSP配置界面,在Stacks中加入AGT,如下圖所示。

點(diǎn)擊可查看大圖
我們使用AGT0來實(shí)現(xiàn)定時(shí)和觸發(fā)中斷功能,需要修改的只有“General”和“Interrupts”部分,其他按照默認(rèn)即可。AGT模塊的FSP配置屬性如下圖所示:

點(diǎn)擊可查看大圖
注
這里的計(jì)數(shù)源(Count Source)時(shí)鐘需要更改為LOCO或者SUBCLOCK(兩者的時(shí)鐘頻率都是32.768KHz),這是因?yàn)槿绻J(rèn)用PCLKB,它的時(shí)鐘頻率很高——50MHz(作為AGT計(jì)數(shù)源可設(shè)置最高8分頻),而AGT計(jì)數(shù)器僅為16位,最高計(jì)數(shù)2的16次方,即65536,通過如下計(jì)算可以知道,這種情況下AGT定時(shí)器無法定時(shí)到足夠的1秒鐘。
? 當(dāng)使用50MHz的PCLKB計(jì)數(shù)源時(shí),AGT最大可定時(shí)時(shí)間為:65536 * (1 / (50/8)) =10485.76 us=10.48576ms。
? 10.48576毫秒遠(yuǎn)小于1秒,因此使用PCLKB=50MHz / 8分頻作為時(shí)鐘源的情況下AGT無法實(shí)現(xiàn)定時(shí)1秒。
對(duì)此的解決方法就是降低PCLKB的時(shí)鐘頻率,或者干脆直接換用另一個(gè)時(shí)鐘頻率較低的計(jì)數(shù)源:LOCO或者SUBCLOCK。實(shí)際上還有另一個(gè)方法是定時(shí)器僅定時(shí)1毫秒產(chǎn)生中斷,然后在中斷里用程序計(jì)數(shù)1000次即1秒,但是CPU頻繁地進(jìn)入中斷是有可能會(huì)影響應(yīng)用程序的性能的,這需要根據(jù)實(shí)際情況做出判斷。
AGT模塊配置屬性描述如下:
表3:AGT屬性描述:“Common”部分

表4:AGT屬性描述:“General”部分

表5:AGT屬性描述:“Interrupts”部分

28.4.2.3
AGT初始化函數(shù)
列表2:AGT初始化函數(shù)
左右滑動(dòng)查看完整內(nèi)容
/* AGT 初始化函數(shù)*/
voidAGT_Timing_Init(void)
{
/* 初始化AGT 模塊*/
R_AGT_Open(&g_timer_agt0_ctrl, &g_timer_agt0_cfg);
/* 啟動(dòng)AGT 定時(shí)器*/
R_AGT_Start(&g_timer_agt0_ctrl);
}
在AGT初始化函數(shù)里面,首先調(diào)用R_AGT_Open函數(shù)初始化AGT模塊,隨后調(diào)用R_AGT_Start函數(shù)來啟動(dòng)AGT定時(shí)器。
28.4.2.4
AGT中斷回調(diào)函數(shù)
列表3:AGT中斷回調(diào)函數(shù)
左右滑動(dòng)查看完整內(nèi)容
/* 定時(shí)器溢出中斷回調(diào)函數(shù)*/
voidagt0_timing_callback(timer_callback_args_t * p_args)
{
if(TIMER_EVENT_CYCLE_END== p_args->event)
{
/* 翻轉(zhuǎn)LED1 */
LED1_TOGGLE;//每秒翻轉(zhuǎn)一次
}
}
中斷回調(diào)函數(shù)非常簡單,使用if語句判斷引起中斷的事件,若是定時(shí)器溢出中斷(TIMER_EVENT_CYCLE_END)則翻轉(zhuǎn)一次LED1的電平。
28.4.2.5
hal_entry入口函數(shù)
注
以下hal_entry函數(shù)是以啟明6M5開發(fā)板的代碼為例,讀者需要注意另外兩塊板子的調(diào)試串口初始化函數(shù)名不是“Debug_UART4_Init”。
列表4:hal_entry函數(shù)
左右滑動(dòng)查看完整內(nèi)容
/* 用戶頭文件包含*/
#include"led/bsp_led.h"
#include"debug_uart/bsp_debug_uart.h"
#include"gpt/bsp_gpt_timing.h"
voidhal_entry(void)
{
/*TODO:add your own code here */
LED_Init();// LED 初始化
Debug_UART4_Init();// SCI4 UART 調(diào)試串口初始化
AGT_Timing_Init();// AGT 初始化
printf("這是一個(gè)AGT 的基本定時(shí)功能實(shí)驗(yàn)
");
while(1)
{
printf("The program is running ...
");
R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_SECONDS);
}
#ifBSP_TZ_SECURE_BUILD
/* Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
}
28.4.3
下載驗(yàn)證
編譯并下載到開發(fā)板后,復(fù)位板子讓程序運(yùn)行,然后可以觀察到板載LED1(紅色)每秒鐘翻轉(zhuǎn)一次狀態(tài),即以兩秒為周期在緩慢閃爍。
-
led
+關(guān)注
關(guān)注
244文章
24738瀏覽量
692749 -
瑞薩
+關(guān)注
關(guān)注
38文章
22523瀏覽量
91403 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3376瀏覽量
124752 -
串口
+關(guān)注
關(guān)注
15文章
1628瀏覽量
83429
原文標(biāo)題:實(shí)驗(yàn)1:基本定時(shí)功能——瑞薩RA系列FSP庫開發(fā)實(shí)戰(zhàn)指南(103)
文章出處:【微信號(hào):瑞薩嵌入式小百科,微信公眾號(hào):瑞薩嵌入式小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
瑞薩RA系列FSP庫開發(fā)實(shí)戰(zhàn)指南之I2C讀寫EEPROM實(shí)驗(yàn)
瑞薩RA系列FSP庫開發(fā)實(shí)戰(zhàn)指南之AGT低功耗定時(shí)器簡介和結(jié)構(gòu)框圖
瑞薩RA系列FSP庫開發(fā)實(shí)戰(zhàn)指南之使用GPT基本定時(shí)功能實(shí)驗(yàn)
瑞薩RA系列FSP庫開發(fā)實(shí)戰(zhàn)指南之使用AGT進(jìn)行PWM輸出實(shí)驗(yàn)
瑞薩e2studio(1)----瑞薩芯片之搭建FSP環(huán)境
【RA-Eco-RA4M2開發(fā)板評(píng)測】+VS Code 下瑞薩 RA4M2 開發(fā)環(huán)境搭建與 GPIO 點(diǎn)燈實(shí)驗(yàn)教程
【瑞薩RA4系列開發(fā)板體驗(yàn)】開發(fā)環(huán)境搭建和新手點(diǎn)燈指南
【瑞薩RA4系列開發(fā)板體驗(yàn)】定時(shí)器(r_agt)使用經(jīng)驗(yàn)
【瑞薩RA4系列開發(fā)板體驗(yàn)】體驗(yàn)過程
【有獎(jiǎng)直播預(yù)報(bào)名】瑞薩電子RA系列產(chǎn)品開發(fā)工具之FSP4.0.0新特性介紹
【視頻教程】瑞薩RA單片機(jī)FSP開發(fā)(3)FSP架構(gòu)-解釋Blinky架構(gòu)[上]
瑞薩電子RA系列微控制器的可擴(kuò)展性強(qiáng)的配置軟件包 (FSP)安裝下載與使用指南
瑞薩RA系列FSP庫開發(fā)實(shí)戰(zhàn)指南之使用GPT進(jìn)行PWM輸出實(shí)驗(yàn)
瑞薩RA系列FSP庫開發(fā)實(shí)戰(zhàn)指南之使用AGT基本定時(shí)功能實(shí)驗(yàn)
評(píng)論