失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 恩智浦智能车(CNYouth)

恩智浦智能车(CNYouth)

时间:2022-08-30 20:29:13

相关推荐

恩智浦智能车(CNYouth)

K60有4个PIT模块,可用于定时、计时、延时作用。

智能车学习总结:

INT_COUNT 0xFFFF(这是最大值) //LPT产生中断的计数次数。

PIT模块,LPTMR模块,SysTick模块。

SysTick:滴答定时器

FTM产生PWM脉冲,所谓的定时就是设置一定时间,时间到了就执行程序。

led_turn(LED0) // 闪烁LED0

PIT_Flag_Clear(PTTO);//清楚中断标志

lptmr_timing_ms(uint16 ms);//定时(ms)毫秒

lptmr_delay_us(uint16 us);//延时(us)

注意:如果你启动(开始计时)的时候用的us,那么你计时(获取时间)的时候也要用us,ms同理。

lptmr_time_start_ms(void);//开始计时(ms)lptmr_time_get_ms(void);//获取计时时间lptmr_time_start_us(void);//开始计时(us)lptmr_time_get_us(void);//获取计时时间关闭计时器:lptmr_time_close();//关闭计时器都是统一的

由如上两个图片可以得出PIT模块,LPTMR模块两个模块的计时函数差不多,在用法上。

这是第二个有一个关闭的函数,其实用不用无所谓,因为再次启动的时候就会清零。

同一时间只能进行一个脉冲计数。

Cortex-M是单片机。内核自带的滴答定时器。好比是人的心脏会砰砰跳。

core_clk_khz //内核时钟,因为内核时钟调频会调很高,所以计时时间很短,所以难以准确,所以一般不用来计时。

上面设置中断服务函数为SysTick_IRQHandler就可以直接调用下面设置的中断服务函数,下面设置中断服务函数,(两个函数在同一个页面,放在main.c文件)

为什么上面设置计时100ms,因为他的计时时间是很短的,如果设置1000ms的话,会超出计算配置,比如可能就崩溃了,或者完全记录不准啥的。

Assertion failed in 断点失败,在那个位置,都会一一显示出来。问题出现在如下,是时间超出范围的原因。

如果我们并不想将就于100毫秒的束缚,但是我们有不得不在那里填一个100毫秒,那么我们的办法是,循环!怎么循环?怎么实现了循环,就是一次次的调用,首先调用 SysTick_IRQHandler函数作为 set_vector_handler的参数,如果要让这个参数起到作用,那么就要 SysTick_IRQHandler 函数执行 led_turn(LED0);当然就是让灯闪烁啦,当然,满足条件i==10才让灯闪烁,当然满足条件的时候,也经过了十次调用了,在此过程中 led_init(LED0);也不断初始化,systick_timing_ms(100);也执行了十次。当 i==10;时,调用led_turn(LED0);开始闪烁。闪烁完紧接着给 i 初始为0;然后又开始新的一轮!

很多实时系统的定时器就是使用这个方法实现的!

集成到中断NVIC模块上,一般用作操作系统的心脏,提供定时切换任务。

如果觉得《恩智浦智能车(CNYouth)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。