[分享] STM32H7 创建ThreadX工程的快捷方式

BinWin   2021-9-27 11:45 楼主

        前段时间参加得评测活动有结果了,差强人意啊。

        后面空闲的时候又学习了其他内容,分享一下,也可以所示之前的补充吧。

毫无疑问,使用ST的控制器和处理器已经可以愉快的使用ecosystem体系中的各个软件包了。ThreadX自开源的那一刻起,相信不少ST的用户都迫不及待的想体验一把。时光慢慢,然后获得授权,然后发布Cube_FW,然后,,没有然后了,可以使用CubeMX无痛生成ThreadX工程了。本文就是一次成功的尝试。我们略过RCC、SYS这些大家再熟悉不过的内容,直接寻找目标,RTOS组件。如果你用过TouchGFX那么很容易就找到入口了。

a.jpg

        这个窗口下选择安装软件包后就可以直接新建IOC工程来大显身手了。

细心的朋友会发现一个不完美的地方,那就是GUIX没有被集成。原因呢,可能就是上面提到的TouchGFX,保护意图吧,可以理解。不过能否将这两者配合使用呢?毕竟可以省去工程添加源码那种不方便的功夫消耗。留着这个想法以后再议。

b.jpg

        回到重点的地方,添加ThreadX的组件和功能。Core是一定需要,TraceX是调试组件,可选。HW一般都是自己的板卡了,这里使用过的是ART-Pi,基于STM32H750XB平台的硬件。这些内容做完了,就可以回到CubeMX主页面做软件上的配置修改了。

c.jpg         最简主义,所以修改一下RTOS的时钟节拍就行了,默认1K的栈空间目前是没有什么问题的。TX_TIMER_TICKS_PER_SECOND修改为1000,一般是1ms的最小调度时隙就够很多场景使用了。之外,再配置一个GPIO用来满足点灯的需求,配置一个串口用来输出一下内心的喜悦。然后就直接生成MDK工程了,不要有任何担心

d.jpg 此时的工程是没有任务运行的,刚才的LED和串口就该在这时候写入代码了。可以是这样子的:


#define Thread_Led_PRIO 31u
#define Thread_Led_STK_SIZE 128u
static TX_THREAD Thread_Led_TCB;
uint8_t Thread_Led_STK[Thread_Led_STK_SIZE];

void Thread_Led(ULONG thread_input){

  while(1){
    HAL_GPIO_TogglePin(LED_B_GPIO_Port,LED_B_Pin);
    tx_thread_sleep(200);
  }
}

#define Thread_UART_PRIO 31u
#define Thread_UART_STK_SIZE 512u
TX_THREAD Thread_UART_TCB;
uint8_t Thread_UART_STK[Thread_UART_STK_SIZE];
uint8_t str[] = "threadx running\n";
extern UART_HandleTypeDef huart4;
void Thread_UART(ULONG thread_input){

  while(1){
    HAL_UART_Transmit(&huart4,str,15,0xff);
    tx_thread_sleep(500);
  }
}

以上两个APP在线程入口函数内创建即可。不出意外,此时可以编译下载运行一气呵成了。

VOID tx_application_define(VOID *first_unused_memory)
{
      tx_thread_create(&Thread_Led_TCB,"thread_led",Thread_Led,0,&Thread_Led_STK[0],Thread_Led_STK_SIZE,Thread_Led_PRIO,3,TX_NO_TIME_SLICE,TX_AUTO_START);
      tx_thread_create(&Thread_UART_TCB,"thread_led",Thread_UART,0,&Thread_UART_STK[0],Thread_UART_STK_SIZE,Thread_UART_PRIO,3,TX_NO_TIME_SLICE,TX_AUTO_START);
}

不忘看下串口有没有输出啊,似乎ThreadX很给力

e.jpg

以上内容摘自微信公众号  懂一点技术的老王 ,有兴趣的可以去关注,号主会时不时的分享一些时下较热门的业内新闻和技术点

原文地址 

https://mp.weixin.qq.com/s/WeXBcRuSOb_49yM8ncm21A

qrcode_for_gh_4905990136cb_258.jpg

本帖最后由 BinWin 于 2021-9-27 11:49 编辑

回复评论 (3)

确实比较是最简了,CubeMX就这么无痛生成ThreadX工程了

点赞  2021-9-27 14:41
引用: Jacktang 发表于 2021-9-27 14:41 确实比较是最简了,CubeMX就这么无痛生成ThreadX工程了

是的,老王就是这么没有痛感

点赞  2021-9-27 15:26

谢谢分享,期待tx大量应用!

默认摸鱼,再摸鱼。2022、9、28
点赞  2021-9-27 18:03
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复