rt thread钩子函数怎么用

rt thread钩子函数怎么用,第1张

RTT在空闲的时候可以使用钩子函数执行些简单的任务,例如LED闪烁之类的程序,利用这个功能我们可以做个工作状态指示灯

要使用钩子必须在配置里打开钩子的配置,在rt-config.h里添加HOOK宏定义(如果没有的话)

#define RT_USING_HOOK

然后在应用程序里设置钩子函数

#ifdef RT_USING_HOOK

rt_thread_idle_sethook(rt_hw_led_flash)

#endif

下面就是该怎样实现这个函数了

void rt_hw_led_flash(void)

{

rt_uint32_t i

rt_hw_led_init()

while (1)

{

for(i = 0i <2700000i++) //500ms

GPIO_WriteBit(state_led_gpio, state_led_pin, (BitAction)(1-GPIO_ReadOutputDataBit(state_led_gpio, state_led_pin)))

}

}

这样写过之后,在系统空闲的时候就会执行这个函数,当然,如果系统繁忙的时候是不会进入这个idel任务的,不过如果系统一直处于繁忙的状态就是有问题了

另外一点记住,在这个函数里不能调用系统提供的使线程挂起的函数

例如:

rt thread delay,

rt sem take

while (1)

{

for(i = 0i <2700000i++) //500ms

GPIO_WriteBit(state_led_gpio, state_led_pin, (BitAction)(1-GPIO_ReadOutputDataBit(state_led_gpio, state_led_pin)))

}

关键是这个while(1)没跳出的,所以全部在这里执行了。

好像还有同学对其中一些并不是完全清楚,所以继续解析下,当做结贴:

1. idle线程是系统中最后一道防线,它将是系统中,如果无其他事可干时的最后能够运行的线程。

-- 所以idle线程不应该被阻塞。如果你有自己的线程能够成为这最后一道防线,那么这个限制将不存在。而对于一些原来系统中放在idle线程中做的工作(例如原来的最终的线程删除动作),在0.4.x中,可以手工调用rt_thread_idle_excute函数来执行。

2. 当系统空闲的时候,idle线程将执行这个钩子函数。

假设钩子函数一次运行会执行1ms,如果idle线程有机会运行200ms,那么钩子函数将被调用200次。

3. 钩子函数运行时,不应该把idle线程总是纠结在这个函数中运行,必须要让idle线程有机会去运行rt_thread_idle_excute函数(因为还有一些事情等待idle线程去处理)。

-- 所以在钩子函数中,不应该使用while(1)的方式。

while(1)

{

if ( indicator == RT_TRUE)

{

....do something

}

else

delay(20ms)

}

这样那20ms会执行idle线程吧,问题是idle 20ms够吗,如果我改20ms为5ms呢?

如果没有其他线程处理事务,将转换到idle线程去,通常idle线程中的系统任务会在0.xx ms以内执行完毕

PT:渗透检测 MT:磁粉检测 RT:射线检测 UT:超声波检测

渗透检测适用于板材、复合板材、锻件、管材和焊缝表面开口缺陷的检测。渗透检测不适用多孔性材料的检测。

磁粉检测适用于铁磁性材料制板材、复合板材、管材以及锻件等表面和近表面缺陷的检测;也适用于铁磁性材料对接焊接接头、T型焊接接头以及角焊缝等表面和近表面缺陷的检测。磁粉检测不适用非铁磁性材料的检测。 

射线检测适用于锅炉、压力容器及压力管道金属材料板和管的熔化焊对接接头的检测,用于制作焊接接头的金属材料包括碳素钢、低合金钢、不锈钢、铜及铜合金、铝及铝合金、钛及钛合金、镍及镍合金。射线检测不适用于锻件、管材、棒材的检测。T型焊缝、角焊缝以及堆焊层的检测一般也不采用射线检测。

超声波检测适用于板材、复合板材、碳钢和低合金钢锻件、管材、棒材、奥氏体不锈钢锻件等锅炉、压力容器及压力管道原材料和零部件的检测;也适用于锅炉、压力容器及压力管道对接焊缝、T型焊缝、角焊缝以及堆焊层等的检测。

1、UT: Ultrasonic test 超声波探伤

超声波探伤是利用超声能透入金属材料的深处,并由一截面进入另一截面时,在界面边缘发生反射的特点来检查零件缺陷的一种方法,当超声波束自零件表面由探头通至金属内部,遇到缺陷与零件底面时就分别发生反射波,在荧光屏上形成脉冲波形,根据这些脉冲波形来判断缺陷位置和大小。

2、MT: Magnetic test 磁粉探伤

磁粉探伤法是利用工件缺陷处的漏磁场与磁粉的相互作用的方法,它利用了钢铁制品表面和近表面缺陷(如裂纹,夹渣,发纹等)磁导率和钢铁磁导率的差异,磁化后这些材料不连续处的磁场将发生崎变,形成部分磁通泄漏处工件表面产生了漏磁场,从而吸引磁粉形成缺陷处的磁粉堆积--磁痕,在适当的光照条件下,显现出缺陷位置和形状。

3、RT: RADIOGRAPHIC test 射线检测

X射线与自然光并没有本质的区别,都是电磁波,只是X射线的光量子的能量远大于可见光。它能够穿透可见光不能穿透的物体,而且在穿透物体的同时将和物质发生复杂的物理和化学作用,可以使原子发生电离,使某些物质发出荧光,还可以使某些物质产生光化学反应。如果工件局部区域存在缺陷,它将改变物体对射线的衰减,引起透射射线强度的变化,这样,采用一定的检测方法,比如利用胶片感光,来检测透射线强度,就可以判断工件中是否存在缺陷以及缺陷的位置、大小。

4、PT:PENETRANT TEST 渗透检测

又称渗透探伤,是一种以毛细作用原理为基础的检查表面开口缺陷的无损检测方法。

5、ET:涡流检测

涡流检测是指利用电磁感应原理,通过测量被检工件内感生涡流的变化来无损地评定导电材料及其工件的某些性能,或发现缺陷的无损检测方法。在工业生产中,涡流检测是控制各种金属材料及少数石墨、碳纤维复合材料等非金属导电材料及其产品品质的主要手段之一,在无损检测技术领域占有重要的地位。

这些方法是不同的检测手段,学习时要分别学习,他们的理论基础不同、检测原理不同、检测方法不同、检测缺欠效果各有偏重,互为补充。

参考资料:百度百科-超声波探伤百度百科-磁粉探伤法百度百科-射线检测百度百科-渗透检测百度百科-涡流检测


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/135224.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-17
下一篇2023-03-17

发表评论

登录后才能评论

评论列表(0条)

    保存