完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
简介
在应用中有许多禁止被打断的操作,如底层驱动等,这个时候就需要关闭中断 在STM32CubeMX上配置FreeRTOS非常的简单,几乎不需要做任何操作,只需要勾选 移植FreeRTOS就成功了,关于在非Cube上的RTOS配置文件内的相关内容,也在下方的Configuration栏中给好了 所有的配置都可以在这里完成 任务创建 有别于在没有使用Cube下的创建方式,在Cube中它专门提供了可视化的创建方式,并且增加了中间文件cmsis_os.c将freertos中提供的方法进行了再一次的封装(猜测可能是为了支持更多的OS吧) 可视化创建方式 在Tasks and Queues中可以点击Add按钮添加新的任务 1、任务名字 2、任务优先级(因为增加了一个层级结构,导致不再是以数字来决定优先级了) 3、栈大小 4、函数名(有别于第一条,第一条是字符串格式的,这条是定义代码中的函数名字) 5、代码生成设置(生成与否?还是生成弱函数——希望自行编写函数的选As External,希望自动生成的选Default) 6、传入的数据/指针,一般为NULL,有希望传入的数据可以修改 7、创建方式(动态或静态,一般动态,很少使用静态方式) 代码创建方式 osThreadId LED_Blink2Handle; osThreadDef(LED_Blink2, Blink_PB1, osPriorityNormal, 0, 128); LED_Blink2Handle = osThreadCreate(osThread(LED_Blink2), NULL); 代码创建也很简单,实际上osThreadCreate对xTaskCreate进行了封装,而osThreadDef与osThread都是宏定义,用于描述初始化变量的,通过预编译器巧妙的生成了函数名(字符串)与相关初始化变量赋给了函数osThreadCreate LED_Blink2:希望生成的中间结构体名称也会被预编译器生成同名的字符串 Blink_PB1:真实的函数名称 osPriorityNormal:优先级 0:最大实例化个数(估计是以后会用到,目前这个变量还没什么作用,默认0就好) 128:栈空间 开关中断 /* USER CODE BEGIN Header_Init */ /** * @brief Function implementing the Init_Timer thread. * @param argument: Not used * @retval None */ /* USER CODE END Header_Init */ void Init(void const * argument) { /* USER CODE BEGIN Init */ osThreadDef(LED, Blink, osPriorityNormal, 0, 128); LEDHandle = osThreadCreate(osThread(LED), NULL); vTaskDelete(NULL); /* USER CODE END Init */ } /* USER CODE BEGIN Header_Blink */ /** * @brief Function implementing the LED thread. * @param argument: Not used * @retval None */ /* USER CODE END Header_Blink */ void Blink(void const * argument) { /* USER CODE BEGIN Blink */ unsigned int i = 0; HAL_TIM_Base_Start_IT(&htim1); /* Infinite loop */ for(;;) { i = 0x017B8935; portDISABLE_INTERRUPTS(); while(i--); portENABLE_INTERRUPTS(); osDelay(1000); } /* USER CODE END Blink */ } portDISABLE_INTERRUPTS(); portENABLE_INTERRUPTS(); 用于开关中断,需要注意的是,若想在其中间做一点延时,那么不能使用 osDelay(1000);函数,因为他会自动开启中断 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1758 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1613 浏览 1 评论
1055 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
721 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1670 浏览 2 评论
1932浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
723浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
564浏览 3评论
590浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
548浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 09:48 , Processed in 0.699620 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号