STM32H750 KEIL CMSIS RTOS2工程的的建立

原来一直用KEIL UV4,用了KEIL 的 RTX实时操作系统,就再也回不去裸奔的时代了,RTX实时操作系统的多任务制非常便于模块化程序设计,关键是还非常适用于小型而高实时性要求的应用场景,加上现在的CPU处理速度已经很快了,不需要再考虑RTX操作系统的任务切换的额外消耗时间,另外实时中断也不受RTX操作系统的影响,建议裸奔的兄弟们可以花的时间去试用一下,会有惊喜的,好了,不再废话了,新RTOS2 没法直接在KEIL显示各任务实时运行状态了,上图吧:在这里插入图片描述
在这里插入图片描述
上面这个些中间件在KEI UV5安装后,自行安装不再赘述,:)点OK后,会启动STM32CUBEMX,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
先将RCC时钟信号配置好,我用的是12MHZ,默认的是25MHZ,后面有个地方一点要注意就是配置文件里的HSE也一定要配置为12MHZ,不然RTOS2运行的时钟信号不对:)
在这里插入图片描述
这里输入12MHZ
在这里插入图片描述

这里直接输入480MHZ,让系统自动配置其他的参数就可以了,然后点 GENERATE CODE 按钮
在这里插入图片描述
生成新工程后在KEIL中加载,目录如下:)
在这里插入图片描述
在这里插入图片描述
这里需要将这个ARM编译器设为版本6,不然编译速度让你怀疑人生:0,先编译一次,将会出现3个错误:)
在这里插入图片描述
这就因为RTOS2库中用了这3个中断,所以在在这里插入图片描述
这个里需要将这个三个函数改下名:)
在这里插入图片描述
在函数名后面加个1就可以了,简单:),再编译一下就没亦错误了,这个基本完成准备工作了:)
在这里插入图片描述
现在就可以在主程序中增加任务了,首先需要在主程序中增加一个头文件 #include “cmsis_os2.h”,
然后在主程序初始化部分以下4个函数
SystemCoreClockUpdate();//初始化系统时钟
osKernelInitialize();//初始化操作系统内核
osThreadNew(First_Task,(void *)1,0);//新建第一个进程
osKernelStart();//启动系统
这几个函数必须在WHILE(1)循环以前,后面不能再有初始化代码,有也不会运行了:)上面的 osThreadNew(First_Task,(void *)1,0)函数里的(First_Task)就是第一个任务或进程:),下面是这个函数 的定义 :),定义了一个观察变量my_ctr,用来观察函数是否按照设定的时间片运行,下面的任务是0.1秒运行一次,这个基本和原来的RTX差不多了,就是函数名称发生了改变,
unsigned int my_ctr[5];
void First_Task(void *argument){

// initialize peripherals here
/* 初始化外设 /
my_ctr[0]++;
my_ctr[1]=my_ctr[0];
while (1)
{
/
USER CODE END WHILE /
osDelay(100);
my_ctr[0]++;
my_ctr[1]=my_ctr[0];
/
USER CODE BEGIN 3 */
}
}
还有的地方一定要注意,就是下面的HSE一定要定义为自己系统的实际晶振,不然就会以25MHZ的晶振进行计算操作系统 的时间片定时,会和实际不准。
在这里插入图片描述
编译后后没亦错误的话,就可以直接下载并运行,这个不操作任何硬件,只对my_ctr[0]进行计数操作,下载调试运行后,观察my_ctr[0]值就可以了:)
在这里插入图片描述
好了,新建一个CMSIS RTOS2工程就完成了,其他的操作系统函数,都有对应的说明,下面是打开方式
在这里插入图片描述
在这里插入图片描述
这里面有操作系统的函数和配置说明,可以自行选择对应的功能,初次写文章,如果有错误还请多多指教:)本文主要目的是用STM32H750VB芯片建立一个可以运行CMSIS RTOS2操作系统最基本的例程,因为原来主要用的STM32F103R8T6+VRTX(KEIL UV4),准备将原来的控制器程序移植到H750VB的芯片(快很多:D),后面会陆续写移植的坑和解决方法:)
/ * ------------------------------------------------ ----------------------------

  • CMSIS-RTOS“主要”功能模板
  • ------------------------------------------------- -------------------------- * /

#include“ RTE_Components.h”
#include CMSIS_device_header
#include“ cmsis_os2.h ”

/ * ------------------------------------------------ ----------------------------
*应用程序主线程

  • ------------------------------------------------- -------------------------- * /
    void app_main(void * argument){

// …
for(;;){}
}

int main(void){

//系统初始化
SystemCoreClockUpdate();
// …

osKernelInitialize(); //初始化CMSIS-RTOS
osThreadNew(app_main,NULL,NULL); //创建应用程序主线程
osKernelStart(); //开始执行线程
for(;;){}
}

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值