当前位置: 首页 > wzjs >正文

网站贸易表格怎么做北京建站公司做网站价格

网站贸易表格怎么做,北京建站公司做网站价格,网站推广小助手,长安做网站公司FreeRtos是之前的一些聪明的工程师写的免费且开源的嵌入式实时操作系统代码,由于我们实际工作中不需要再去写rtos,我们只需要用就行了,所以博主这里只分享项目工程实战相关的内容,具体rtos源码,可以无需理会&#xff0…

FreeRtos是之前的一些聪明的工程师写的免费且开源的嵌入式实时操作系统代码,由于我们实际工作中不需要再去写rtos,我们只需要用就行了,所以博主这里只分享项目工程实战相关的内容,具体rtos源码,可以无需理会,除非你要自己写一个rtos。

另外rtos的移植的话,博主会放在最后一章,因为也没什么用(毕竟cubemx或者类似S32DS等软件已经可以一键生成带freertos的工程了)。

废话说完了,干货走起。

———————————————————————————————————————————

1.以rtos的形式开发时,首先是在main函数中进行相关外设的初始化,之后创建个start_task任务,start_task用于创建实际项目应用所需要的各个执行任务,创建完start任务之后,开始任务调度器的任务调度。

外设的初始化代码如下:

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4	 delay_init();	    				//延时函数初始化	 uart_init(115200);					//初始化串口LED_Init();		  					//初始化LEDLCD_Init();							//初始化LCDPOINT_COLOR = RED;LCD_ShowString(30,10,200,16,16,"ATK STM32F103/F407");	LCD_ShowString(30,30,200,16,16,"FreeRTOS Examp 6-1");LCD_ShowString(30,50,200,16,16,"Task Creat and Del");LCD_ShowString(30,70,200,16,16,"ATOM@ALIENTEK");LCD_ShowString(30,90,200,16,16,"2016/11/25");

2.创建任务:

之后main函数中要先创建开始任务,创建完成之后开始任务调度,代码如下:

//创建开始任务xTaskCreate((TaskFunction_t )start_task,            //任务函数(const char*    )"start_task",          //任务名称(uint16_t       )START_STK_SIZE,        //任务堆栈大小(void*          )NULL,                  //传递给任务函数的参数(UBaseType_t    )START_TASK_PRIO,       //任务优先级(TaskHandle_t*  )&StartTask_Handler);   //任务句柄              vTaskStartScheduler();          //开启任务调度

这个地方我们展开说一下创建任务的接口及所需变量定义:

创建任务接口:

BaseType_t xTaskCreate(	TaskFunction_t pxTaskCode,const char * const pcName,const uint16_t usStackDepth,void * const pvParameters,UBaseType_t uxPriority,TaskHandle_t * const pxCreatedTask ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */

①其中pxTaskCode为实际的任务接口名称,具体实现见下:

//开始任务任务函数
void start_task(void *pvParameters)
{taskENTER_CRITICAL();           //进入临界区//创建TASK1任务xTaskCreate((TaskFunction_t )task1_task,             (const char*    )"task1_task",           (uint16_t       )TASK1_STK_SIZE,        (void*          )NULL,                  (UBaseType_t    )TASK1_TASK_PRIO,        (TaskHandle_t*  )&Task1Task_Handler);   //创建TASK2任务xTaskCreate((TaskFunction_t )task2_task,     (const char*    )"task2_task",   (uint16_t       )TASK2_STK_SIZE,(void*          )NULL,(UBaseType_t    )TASK2_TASK_PRIO,(TaskHandle_t*  )&Task2Task_Handler); vTaskDelete(StartTask_Handler); //删除开始任务taskEXIT_CRITICAL();            //退出临界区
}

注意:start任务的主要功能为创建项目工程实际需要使用的具体任务,需要在创建完其他任务之后,删除掉start任务,所谓的“事了拂衣去,深藏功与名”

②pcName:即任务字符串名称,跟上一个任务名称保持一致即可;

③usStackDepth:即任务堆栈大小;

④pvParameters:传递给任务函数的参数,这里我们一般为NULL即可;

⑤uxPriority:任务优先级,注意freertos的任务优先级不同于中断优先级,freertos的任务优先级是值越大,优先级越高;

⑥pxCreatedTask:任务句柄,用来存放任务的相关信息;

任务相关参数的定义示例如下:

//任务优先级
#define START_TASK_PRIO		1
//任务堆栈大小	
#define START_STK_SIZE 		128  
//任务句柄
TaskHandle_t StartTask_Handler;
//任务函数
void start_task(void *pvParameters);

3.删除任务:

vTaskDelete(StartTask_Handler); //删除开始任务

调用接口示例如上,vTaskDelate(NULL);时为删除当前任务;

3.集成示例:

之后我们创建task1和task2,在task1和task2的任务函数中的相关代码结构如下:

void task1_task(void *pvParameters)
{//init codewhile(1){//action code}
}

我们这里实现的task1和task2的任务逻辑为,task1按照1s为周期切换LCD屏幕区域的填充颜色,且在任务执行五次之后删除任务2;

task2的任务执行逻辑为按照1s为周期切换LCD屏幕的填充颜色;

实际效果见下:(后续会上传视频,视频正在审核中)

http://www.dtcms.com/wzjs/564480.html

相关文章:

  • 万网如何建网站网站正在建设中 代码
  • 烟台优化网站排名百度推广后台登录入口
  • 济南免费建站网站报备流程
  • 手机上怎么做网站中江建设银行网站
  • 山西网站开发建设网站开发 国际网站
  • 商城购物网站开发意义天津做流产五洲网站
  • 江苏省建设监理协会网站安卓市场app下载
  • 哪个网站课件做的比较好微网站开发语言
  • 国外营销企业网站苏州协会网站建设
  • 南昌天和建设有限公司网站珠宝wordpress主题
  • 网站管理助手未找到iis知名软装设计公司
  • wordpress 类似软件淄博网站建设优化上汽
  • 领导视察网站建设360网站卫士代备案流程
  • 国外优秀营销网站设计小程序公司平台开发
  • 网站建设风格总结公司网站怎么做包括什么
  • 微信平台与微网站开发网站开发背景和目的
  • 网站建设与运营合同网站建设平台合同模板
  • 网站开发语言分辨岳阳市交通建设投资公司门户网站
  • 动漫视频网站模板自学软件开发需要多久
  • 租电信网站服务器吗漳浦网页定制
  • 长沙建设工程造价网济南seo排行榜
  • 自己给公司做网站网站开发团队投入
  • 昆明网站建设是什么企业级网站开发平台
  • 在哪查网站备案做网站应该做哪方面的
  • 抖音官网链接网站怎么做科技打破垄断全球的霸权
  • 帝国cms 网站名称标签网站续费合同书
  • 网站静态和动态那个好上海专业网站建站
  • 纯净水企业怎样做网站淘宝官网电脑版网页
  • 莆田网站建设创意网站推广是做什
  • 网站建设公司需要具备什么网站开发计划甘特图