苏州网联盛网站建设,建设部网站注册,h5活动页面制作,网站怎么做多语言展示我们配置好了滴答定时器之后#xff0c;还要手动编写滴答定时器的中断服务函数#xff0c;因为我们开启的滴答定时器的中断#xff0c;当滴答定时器的计数值从我们设置的值减到0时#xff0c;就会触发一次中断#xff0c;触发中断就会执行中断服务函数。各个中断的中断服务…
我们配置好了滴答定时器之后还要手动编写滴答定时器的中断服务函数因为我们开启的滴答定时器的中断当滴答定时器的计数值从我们设置的值减到0时就会触发一次中断触发中断就会执行中断服务函数。各个中断的中断服务函数名称已经被写死不可修改否则无法正常进入中断服务函数。关于中断服务函数的名称是什么可以在工程的.s文件中找到各个中断的中断服务函数名称。 #include ti_msp_dl_config.hvolatile 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这样我们的精确延时函数就写好了。