找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1019|回復(fù): 0
收起左側(cè)

AT32定時(shí)器

[復(fù)制鏈接]
ID:1113354 發(fā)表于 2024-3-18 16:56 | 顯示全部樓層 |閱讀模式
一、定時(shí)器中斷
定時(shí)器溢出中斷是定時(shí)器最基礎(chǔ)功能,進(jìn)入中斷的時(shí)間周期可由相關(guān)寄存器配置。
1、 定時(shí)器計(jì)數(shù)器值 TMRx_CVAL
2、 定時(shí)器預(yù)分頻寄存器 TMRx_DIV
3、定時(shí)器周期寄存器(TMRx_PR)

配置流程
1  編寫定時(shí)器溢出中斷函數(shù)的應(yīng)用程序
2  開啟定時(shí)器外設(shè)時(shí)鐘
3  配置定時(shí)器 TMRx_DIV 寄存器和 TMRx_PR 寄存器
4  配置定時(shí)器為向上計(jì)數(shù)方向
5 開啟定時(shí)器溢出中斷
6  開啟 NVIC 溢出中斷
7 開啟定時(shí)器計(jì)數(shù)

int main(void)
{
/* 系統(tǒng)時(shí)鐘配置 */
system_clock_config();
/* LED 延時(shí)函數(shù)等初始化 */
at32_board_init();
/* 獲取系統(tǒng)時(shí)鐘 */
crm_clocks_freq_get(&crm_clocks_freq_struct);
/* 點(diǎn)亮 LED2/LED3/LED4 */
at32_led_on(LED2);
at32_led_on(LED3);
at32_led_on(LED4);
/* 開啟 TMR1 時(shí)鐘 */
crm_periph_clock_enable(CRM_TMR1_PERIPH_CLOCK, TRUE);
/* 配置定時(shí)器 TMRx_DIV 寄存器和 TMRx_PR 寄存器 */
/* systemclock/24000/10000 = 1hz */
tmr_base_init(TMR1, 9999, (crm_clocks_freq_struct.ahb_freq / 10000) - 1);
/*配置定時(shí)器為向上計(jì)數(shù)方向,如果選擇向上計(jì)數(shù)也可以不配置該語句,
因?yàn)?TMR 默認(rèn)就是向上計(jì)數(shù)模式 */
tmr_cnt_dir_set(TMR1, TMR_COUNT_UP);
/* 開啟定時(shí)器溢出中斷 */
tmr_interrupt_enable(TMR1, TMR_OVF_INT, TRUE);
/* 開啟 NVIC 溢出中斷 */
nvic_priority_group_config(NVIC_PRIORITY_GROUP_4);
nvic_irq_enable(TMR1_OVF_TMR10_IRQn, 0, 0);
/* 開啟定時(shí)器計(jì)數(shù) */
tmr_counter_enable(TMR1, TRUE);
clkout_config();
while(1)
{

}
}


中斷函數(shù)

void TMR1_OVF_TMR10_IRQHandler(void)
{
/* 判斷溢出標(biāo)志位是否置起 */
if(tmr_flag_get(TMR1, TMR_OVF_FLAG) == SET)
{
/* 增加應(yīng)用程序 */
at32_led_toggle(LED3);
tmr_flag_clear(TMR1, TMR_OVF_FLAG);
}
}

實(shí)驗(yàn)效果LED3 1 秒翻轉(zhuǎn)一次


公式.jpg
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表