STM32单片机RTOS操作系统MBD工具包开发心得

STM32是意法半导体开发的常用芯片,为了迎合MBD开发模式,ST公司推出了最新版本的MBD工具包,在Matlab/Simulink 2018b环境下,可以通过建模完成APP代码生成。该工具包功能丰富,涵盖了APP应用建模所需。
在这里插入图片描述

STM32的RTOS操作系统

RTOS是一款实时操作系统,其优越性不再赘述,在STM32程序开发过程中,采用ST官方STM32CubeMX工具,配置IOC文件,可以轻松生成可靠的RTOS应用环境,手工添加任务代码。但是,在MBD模式下,程序代码是通过模型生成的,因此应用程序需要与RTOS建立接口模块,将程序模型生成为RTOS任务代码。
通过STM32CubxMX生成的RTOS代码

解决思路

RTOS主要的API操作时任务的创建、挂起、恢复、删除4项功能,此外程序运行过程中,需要对任务属性进行获取,因此初步规划,MBD工具包库主要包含以上模块。如图
工具包

技巧性问题

任务创建
任务创建模块,需要在建模的时候由开发者来配置任务名称、优先级、周期、堆栈空间,代码生成可直接生成任务函数名、任务句柄、任务周期的C语言函数。而函数的主体内容,则通过子系统代码生成添加到函数中,下图为一个led灯闪烁的模型;
在这里插入图片描述
子系统内部是控制芯片Pin9管脚,每次执行将亮灯状态求反送给管脚,并存储;
在这里插入图片描述
生成的任务函数代码如下

void ledshow_task(void *pvParameters)
{
  while (1) {
    /* Output and update for function-call system: '<Root>/Function-Call Subsystem' */

    /* Logic: '<S1>/Logical Operator' incorporates:
     *  DataStoreRead: '<S1>/Data Store Read'
     */
    RTOSGPIO2_B.LogicalOperator_b = (RTOSGPIO2_DW.ledstatus1 == 0);

    /* DataTypeConversion: '<S1>/Data Type Conversion' incorporates:
     *  DataStoreWrite: '<S1>/Data Store Write'
     */
    RTOSGPIO2_DW.ledstatus1 = (int8_T)(RTOSGPIO2_B.LogicalOperator_b ? 1 : 0);

    /* S-Function (GPIO_Write): '<S1>/GPIO_Write1' */
    {
      if (RTOSGPIO2_B.LogicalOperator_b == 0)
        HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_RESET);
      else
        HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_SET);
    }

    vTaskDelay(1000);
  }
}

句柄的遍历
编程过程中,我们对任务的操作,主要是通过任务句柄来操作的,而任务句柄名称可以根据我们配置的函数名参数按照一个的规则生成,如,参数配置为ledshow,则任务函数名为ledshow_task,任务句柄名称为ledshowTask_Handler。那么在建模过程中,做一个挂起操作时,如何配置具体的句柄名称呢?
解决办法是,任务挂起模块在被引用的事件中,增加一个遍历整个模型中任务创建模块的m函数,并获取这些模块的任务名称,并添加到模块参数的选项中,通过点选来生成挂起执行的C代码;m函数主要通过操作MaskStyleString参数来设置,也可以先获取模块参数对象,通过setParameter函数实现。
在这里插入图片描述
在建立为MBD库以后,在引用过程中,对block的参数选项修改时,默认是禁止的,因此通过m函数中对模块的LinkStatus属性进行操作,那么模块副本参数即可修改,而模型库中的模块保持原有值。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值