本文介绍的是使用 GPT1 定时器实现定时中断,达到和 EPIT 定时器一样的效果,每隔 500ms 切换LED灯的状态。
目录
一、GPT1 定时器初始化
因为使用GPT的定时中断来切换LED灯的状态,所以这里的配置主要包含:定时器配置、中断配置
- 定时器配置
- 设置复位,并等待复位结束(关于复位的详细内容,参考上一篇:GPT 寄存器解析)
- 定时器配置(选择计数器初始值、选择时钟源、选择工作模式)
- 设置分频数
- 中断配置
- 设置比较值(当计数器的值 == 比较值时,触发中断)
- 中断使能(GIC 使能、GPT 使能、注册中断服务函数)
/*
* @description : gpt 定时初始化
* @param : 定时间隔,单位: ms
* @return : 无
*/
void delay_init(unsigned int interval)
{
// 设置复位(设为复位状态后,除了bit 0、1、2、3、5外,其他位都会被重置为默认值)
GPT1_CR = 0;
GPT1_CR |= (1 << 15);
while((GPT1_CR >> 15) & 0x01); // 等待复位完成
/*
* 配置GPT定时器
* bit 1: 1 设置计数器初始值问为 0
* bit 8

文章介绍了如何通过GPT1定时器初始化和设置中断服务函数,以实现每500毫秒切换一次LED灯状态。配置包括定时器的复位、计数器初始值、时钟源选择、工作模式设定、分频数设置以及中断比较值和使能。在中断服务函数中,根据GPT1_SR判断中断源并切换LED状态。
最低0.47元/天 解锁文章
 —— GPT定时中断&spm=1001.2101.3001.5002&articleId=131420227&d=1&t=3&u=4994aefafa174c4a87954fe7c9252437)
1339

被折叠的 条评论
为什么被折叠?



