1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在掏了几百个大洋后,买了一块Stm32H747-Disco的开发板,听说最近threadX很火,主要这个rtos的安全认证比较齐全,而且全家桶比较完善。双核配threadX,对于开发团队的话,完全可以一个人负责一个核,最后合一下就可以跑起来了,或者一个核跑业务逻辑,一个核跑安全的逻辑,可塑造性更强了。 下面就用板子第一次入门ThreadX了。 开发工具是Stm32CubeIDE, 勾选一下threadX,然后基本不用移植了 对于threadX来说,启动流程也很简单,这边贴一张官方的图 这边tx_kernel_enter()函数调用后,threadX就真正开始运行了,tx_application_define是tx_kernel_enter的回调函数,这个函数主要作用是 我们可以在里面创建任务,信号量,队列这些东东,(ps:这个和freertos还是有点区别的) 这边创建2个任务,使用时间片轮询 UINT ret = TX_SUCCESS; TX_BYTE_POOL *byte_pool = (TX_BYTE_POOL*)memory_ptr; /* USER CODE BEGIN App_ThreadX_Init */ CHAR *pointer; /* Allocate the stack for thread 0. */ tx_byte_allocate(byte_pool, &pointer, DEMO_STACK_SIZE, TX_NO_WAIT); /* Create the main thread. */ tx_thread_create(&thread_0, "thread 0", thread_0_entry, 0, pointer, DEMO_STACK_SIZE, 1, 1, 1, TX_AUTO_START); /* Allocate the stack for thread 1. */ tx_byte_allocate(byte_pool, &pointer, DEMO_STACK_SIZE, TX_NO_WAIT); /* Create threads 1 and 2. These threads pass information through a ThreadX message queue. It is also interesting to note that these threads have a time slice. */ tx_thread_create(&thread_1, "thread 1", thread_1_entry, 1, pointer, DEMO_STACK_SIZE, 1, 1, 1, TX_AUTO_START); /* USER CODE END App_ThreadX_Init */ return ret; 线程函数比较简单,轮流点亮灯,tx_thread_sleep函数的形参是多少个时钟节拍,因为这边的系统时钟配置成了10ms,所以100ms和500ms灯亮灭一次 void thread_0_entry(ULONG thread_input) { /* This thread simply sits in while-forever-sleep loop. */ while(1) { HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin); /* Sleep for 10 ticks. */ tx_thread_sleep(10); } } void thread_1_entry(ULONG thread_input) { /* This thread simply sends messages to a queue shared by thread 2. */ while(1) { HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin); /* Sleep for 10 ticks. */ tx_thread_sleep(50); } } 另外的话,stm32CubeIDE已经做的比较好,调出thread list就可以看到栈的使用情况 灯成功按我们逻辑亮灭,这里说明基本threadX已经跑起来啦 |
|
|
|
只有小组成员才能发言,加入小组>>
3314 浏览 9 评论
2995 浏览 16 评论
3494 浏览 1 评论
9059 浏览 16 评论
4088 浏览 18 评论
1178浏览 3评论
605浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
599浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2335浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1896浏览 2评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 06:09 , Processed in 1.014264 second(s), Total 48, Slave 39 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号