硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1046|回复: 1
收起左侧

[ThreadX全家桶] threadx中的滴答定时器中断的问题

[复制链接]

13

主题

5

回帖

44

积分

新手上路

积分
44
发表于 2023-6-28 19:27:51 | 显示全部楼层 |阅读模式
问题比较多,辛苦啦。。


1、用模板里的“tx_initialize_low_level.S”启动文件文件,原本的启动文件“starup_stm32h750xx.s”是不是就没用了,可以删除了
2、滴答中断处理函数SysTick_Handler在“tx_initialize_low_level.S”被调用,这个SysTick_Handler跟"bsp_time.c"里的“SysTick_ISR”是什么关系?threadx里的滴答定时器中断处理是在汇编函数“_tx_timer_interrupt”实现的。裸机里的滴答定时器中断处理函数是“HAL_IncTick”。
3、SysTick_ISR存在的目的是为了在threadx/裸机设计软件定时器是这个意思吗
4、这里注释掉while里的代码,创建的任务就不执行了。是不是因为cpu一直被while占用,需要加上阻塞延迟tx_thread_sleep释放cpu

下载 (6).png

5、关于中断,stm32h7xx_it.c文件里只注释掉了中断“PendSV_Handler”和“SysTick_Handler”,其他的中断,例如串口中断“USART1_IRQHandler”依然正常使用对吗?
6、有一个串口接收帧并解码的思路请帮忙看看合适不。串口接收一帧16Bytes数据进入中断,在中断中设置事件标志组,再把接收好的16个Byte放入消息队列。有一个“帧解析任务”,在while循环里一直等待获取事件标志,获取后再用tx_queue_receive()函数获取消息队列里的数据。
7、消息队列创建函数tx_queue_create()的第三个形参是“消息队列中每个消息的大小,消息大小范围是1-16,每个消息4字节”意思是不是说每次可以传输数据最大可以是16个32bit的数据,即16*4Byte=64Bytes,最多一次传输64Bytes。再定义消息数组的时候,数组元素数量最大就是16。uint32_t MessageQueuesBuf[16]



回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115878
QQ
发表于 2023-6-29 08:39:35 | 显示全部楼层
1、不可以
2、SysTick_Handler是滴答中断服务器程序,SysTick_ISR是滴答中断里面处理的内容
3、SysTick_ISR是滴答中断里面处理的内容,在ThreadX里面,单独放到一个任务下
4、启动任务是高优先级任务,它不释放CPU权限,其它没有执行机会
5、其它跟裸机使用一样。
6、仅一个消息队列就可以了。
7、对。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-24 18:08 , Processed in 0.366639 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表