当前位置: 首页> 财经> 产业 > MSPM0l1306——配置滴答定时器

MSPM0l1306——配置滴答定时器

时间:2025/7/9 3:19:49来源:https://blog.csdn.net/2302_80529671/article/details/139564398 浏览次数:0次

         

我们配置好了滴答定时器之后,还要手动编写滴答定时器的中断服务函数,因为我们开启的滴答定时器的中断,当滴答定时器的计数值从我们设置的值减到0时,就会触发一次中断,触发中断就会执行中断服务函数。各个中断的中断服务函数名称已经被写死,不可修改,否则无法正常进入中断服务函数。关于中断服务函数的名称是什么,可以在工程的.s文件中找到各个中断的中断服务函数名称。

#include "ti_msp_dl_config.h"volatile unsigned int delay_times = 0;//搭配滴答定时器实现的精确ms延时
void delay_ms(unsigned int ms) 
{delay_times = ms;while( delay_times != 0 );
}        int main(void)
{   SYSCFG_DL_init();while (1) {}
}//滴答定时器中断服务函数
void SysTick_Handler(void)
{if( delay_times != 0 ){delay_times--;}
}

在C语言中,volatile 是一个关键字,用来告诉编译器不要对它所修饰的变量做任何优化,因为这个变量的值可能会随时被意想不到的因素改变,比如硬件中断、多线程操作等。volatile 告诉编译器不要将对这个变量的读写操作优化掉,每次访问都要从变量地址中读取或写入。在多线程或与硬件相关的编程中,volatile 经常用来声明那些程序之外其他实体可能会修改的变量,以确保每次访问都能获取最新的值,避免编译器优化导致的意想不到的问题。

以上代码中执行的逻辑为:开启了滴答定时器后,滴答定时器每隔1ms进入中断服务函数中,中断服务函数里一直判断变量 delay_times是否不为0,当不为0时将会一直自减到0。delay_ms()函数的执行效果就是改变变量delay_times的值,让它不为0,然后死等到变量delay_times为0则结束。因为有中断在不断的以1ms的时间间隔将变量delay_times 自减到0,这样我们的精确延时函数就写好了。 

关键字:MSPM0l1306——配置滴答定时器

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: