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

公司网站怎么做优化element ui设计网站

公司网站怎么做优化,element ui设计网站,快站app官网下载,网站域名的管理密码如何索取任务创建和删除的API函数 xTaskCreate()#xff1a;使用动态方法创建一个任务xTaskCreateStatic()#xff1a;使用静态方法创建一个任务xTaskCreateRestricated()#xff1a;创建一个使用MPU进行限制的任务#xff0c;相关内存使用动态内存分配vTaskDelete()#xff1a;删…任务创建和删除的API函数 xTaskCreate()使用动态方法创建一个任务xTaskCreateStatic()使用静态方法创建一个任务xTaskCreateRestricated()创建一个使用MPU进行限制的任务相关内存使用动态内存分配vTaskDelete()删除一个任务 xTaskCreate 使用该函数configSUPPORT_DYNAMIC_ALLOCATION要设置为1 #if( configSUPPORT_DYNAMIC_ALLOCATION 1 )BaseType_t xTaskCreate( TaskFunction_t pxTaskCode,const char * const pcName,const uint16_t usStackDepth,void * const pvParameters,UBaseType_t uxPriority,TaskHandle_t * const pxCreatedTask ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ #endif pxTaskCode函数名任务执行的函数我们可以把一个任务当做一个函数只不过这个函数可以循环执行pcName任务名字一般用于追踪和调试任务名字不能超过configMAX_TASK_NAME_LENconfigMAX_TASK_NAME_LEN在FreeRTOSConfig.h文件中 usStackDepth任务堆栈大小实际申请到的堆栈是usStackDepth的4倍其中空闲任务堆栈大小为configMINIMAL_STACK_SIZEconfigMINIMAL_STACK_SIZE在FreeRTOSConfig.h文件中定义 pvParameters传递给任务函数的参数uxPriority任务优先级范围是0-configMAX_PRIORITIES-1pxCreatedTask任务句柄任务创建成功后会返回此任务的任务句柄。 返回值 pdPASS if the task was successfully created and added to a ready list, otherwise an error code defined in the file projdefs.h xTaskCreateStatic 使用该函数configSUPPORT_STATIC_ALLOCATION要等于1 #if( configSUPPORT_STATIC_ALLOCATION 1 )TaskHandle_t xTaskCreateStatic( TaskFunction_t pxTaskCode,const char * const pcName,const uint32_t ulStackDepth,void * const pvParameters,UBaseType_t uxPriority,StackType_t * const puxStackBuffer,StaticTask_t * const pxTaskBuffer ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ #endif /* configSUPPORT_STATIC_ALLOCATION */ 参数的具体函数可以看xTaskCreate ulStackDepth需要由用户给出一般是一个数组此参数就是这个数组的大小puxStackBufferMust point to a StackType_t array that has at least ulStackDepth indexes - the array will then be used as the task’s stack,removing the need for the stack to be allocated dynamically.pxTaskBuffer任务控制块pxTaskBuffer Must point to a variable of type StaticTask_t, which will then be used to hold the task’s data structures, removing the need for the memory to be allocated dynamically. 返回值 If neither pxStackBuffer or pxTaskBuffer are NULL, then the task will be created and pdPASS is returned. If either pxStackBuffer or pxTaskBuffer are NULL then the task will not be created and errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY is returned. xTaskCreateRestricted 使用该函数portUSING_MPU_WRAPPERS1 #if( portUSING_MPU_WRAPPERS 1 )BaseType_t xTaskCreateRestricted( const TaskParameters_t * const pxTaskDefinition, TaskHandle_t *pxCreatedTask ) PRIVILEGED_FUNCTION; #endifpxTaskDefinition是一个结构体描述任务函数、堆栈大小优先级等在task.h定义pxCreatedTask任务句柄 vTaskDelete void vTaskDelete( TaskHandle_t xTaskToDelete ) PRIVILEGED_FUNCTION;xTaskToDelete要删除任务的任务句柄 被删除的任务不再存在对于那些有内核自动分配给任务的内存该函数会自动释放掉用户给任务分配的内存需要用户自行释放掉比如pvPortMalloc分配了500字节的内存那么在任务被删除之后用户需要调用vPortFree函数将这些内存删除否则会导致内存泄露 设计 一共有三个任务 start_task用来创建其他两个任务task1_task次任务运行5次以后调用vTaskDelete删除任务task2_task此任务也会控制LED0闪烁并且周期性刷新LCD指定区域的背景颜色task2_task此任务普通的应用任务会控制LED1的闪烁并且周期性的率先LCD指定区域的背景颜色 动态创建 main函数代码 #include sys.h #include delay.h #include usart.h #include led.h #include FreeRTOS.h #include task.h #include lcd.h #include sdram.h//任务优先级 #define START_TASK_PRIO 1 //任务堆栈大小 #define START_STK_SIZE 128 //任务句柄 TaskHandle_t StartTask_Handler; //任务函数 void start_task(void *pvParameters);//任务优先级 #define TASK1_TASK_PRIO 2 //任务堆栈大小 #define TASK1_STK_SIZE 128 //任务句柄 TaskHandle_t Task1Task_Handler; //任务函数 void task1_task(void *pvParameters);//任务优先级 #define TASK2_TASK_PRIO 3 //任务堆栈大小 #define TASK2_STK_SIZE 128 //任务句柄 TaskHandle_t Task2Task_Handler; //任务函数 void task2_task(void *pvParameters);//LCD刷屏时使用的颜色 int lcd_discolor[14] {WHITE ,BLACK,BLUE,BRED,GRED,GBLUE,RED,MAGENTA,GREEN,CYAN,YELLOW,BROWN,BRRED,GRAY};int main(void) {HAL_Init(); //初始化HAL库 Stm32_Clock_Init(360,25,2,8); //设置时钟,180Mhzdelay_init(180); //初始化延时函数LED_Init(); //LED初始化ACR_BYTE0_ADDRESSuart_init(115200);SDRAM_Init();LCD_Init(); POINT_COLOR RED;LCD_ShowString(30,10,200,16,16,Apolo STM32F4/F7);LCD_ShowString(30,30,200,16,16,FreeeRTOS Examples);LCD_ShowString(30,50,200,16,16,Task create and delete);LCD_ShowString(30,70,200,16,16,2021/11/20);xTaskCreate(start_task, //任务函数start_task, //任务名称START_STK_SIZE, //任务堆栈大小NULL, //传递给任务函数的参数START_TASK_PRIO, //任务优先级StartTask_Handler); //任务句柄 vTaskStartScheduler(); //开启任务调度}//开始任务任务函数 void start_task(void *pvParameters) {taskENTER_CRITICAL(); //进入临界区//创建TASK1任务xTaskCreate(task1_task, task1_task, TASK1_STK_SIZE, NULL, TASK1_TASK_PRIO, Task1Task_Handler); //创建TASK2任务xTaskCreate(task2_task, task2_task, TASK2_STK_SIZE,NULL,TASK2_TASK_PRIO,Task2Task_Handler); vTaskDelete(StartTask_Handler); //删除开始任务taskEXIT_CRITICAL(); //退出临界区 } //task1任务函数 void task1_task(void *pvParameters) {u8 task1_num0;POINT_COLOR BLACK;LCD_DrawRectangle(5,110,115,314); //画一个矩形 LCD_DrawLine(5,130,115,130); //画线POINT_COLOR BLUE;LCD_ShowString(6,111,110,16,16,Task1 Run:000);while(1){task1_num; //任务执1行次数加1 注意task1_num1加到255的时候会清零LED0!LED0;//printf(任务1已经执行%d次\r\n,task1_num);if(task1_num5) {if(Task2Task_Handler ! NULL) //任务2是否存在 {vTaskDelete(Task2Task_Handler); //任务1执行5次删除任务2Task2Task_HandlerNULL; //任务句柄清零//printf(任务1删除了任务2!\r\n);}}LCD_Fill(6,131,114,313,lcd_discolor[task1_num%14]); //填充区域LCD_ShowxNum(86,111,task1_num,3,16,0x80); //显示任务执行次数vTaskDelay(1000); //延时1s也就是1000个时钟节拍 } }//task2任务函数 void task2_task(void *pvParameters) {u8 task2_num0;POINT_COLOR BLACK;LCD_DrawRectangle(125,110,234,314); //画一个矩形 LCD_DrawLine(125,130,234,130); //画线POINT_COLOR BLUE;LCD_ShowString(126,111,110,16,16,Task2 Run:000);while(1){task2_num; //任务2执行次数加1 注意task1_num2加到255的时候会清零LED1!LED1;//printf(任务2已经执行%d次\r\n,task2_num);LCD_ShowxNum(206,111,task2_num,3,16,0x80); //显示任务执行次数LCD_Fill(126,131,233,313,lcd_discolor[13-task2_num%14]); //填充区域vTaskDelay(1000); //延时1s也就是1000个时钟节拍 } } 静态创建 使用静态创建任务需要在FreeRTOSConfig.h将宏configSUPPORT_STATIC_ALLOCATION设置为1配置完成之后还需要实现两个函数vApplicationGetIdleTaskMemory和vApplicationGetTimerTaskMemory通过这两个来给空闲任务和定时器服务任务的任务堆栈和任务控制块分配内存这两个函数我们在main.c里面定义 //空闲任务任务堆栈 static StackType_t IdleTaskStack[configMINIMAL_STACK_SIZE]; //空闲任务控制块 static StaticTask_t IdleTaskTCB;//定时器服务任务堆栈 static StackType_t TimerTaskStack[configTIMER_TASK_STACK_DEPTH]; //定时器服务任务控制块 static StaticTask_t TimerTaskTCB; //获取空闲任务地任务堆栈和任务控制块内存因为本例程使用的 //静态内存因此空闲任务的任务堆栈和任务控制块的内存就应该 //有用户来提供FreeRTOS提供了接口函数vApplicationGetIdleTaskMemory() //实现此函数即可。 //ppxIdleTaskTCBBuffer:任务控制块内存 //ppxIdleTaskStackBuffer:任务堆栈内存 //pulIdleTaskStackSize:任务堆栈大小 void vApplicationGetIdleTaskMemory(StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize) {*ppxIdleTaskTCBBufferIdleTaskTCB;*ppxIdleTaskStackBufferIdleTaskStack;*pulIdleTaskStackSizeconfigMINIMAL_STACK_SIZE; } //获取定时器服务任务的任务堆栈和任务控制块内存 //ppxTimerTaskTCBBuffer:任务控制块内存 //ppxTimerTaskStackBuffer:任务堆栈内存 //pulTimerTaskStackSize:任务堆栈大小 void vApplicationGetTimerTaskMemory(StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint32_t *pulTimerTaskStackSize) {*ppxTimerTaskTCBBufferTimerTaskTCB;*ppxTimerTaskStackBufferTimerTaskStack;*pulTimerTaskStackSizeconfigTIMER_TASK_STACK_DEPTH; } main函数里面内容为 #include sys.h #include delay.h #include usart.h #include led.h #include FreeRTOS.h #include task.h #include lcd.h #include sdram.h//空闲任务任务堆栈 static StackType_t IdleTaskStack[configMINIMAL_STACK_SIZE]; //空闲任务控制块 static StaticTask_t IdleTaskTCB;//定时器服务任务堆栈 static StackType_t TimerTaskStack[configTIMER_TASK_STACK_DEPTH]; //定时器服务任务控制块 static StaticTask_t TimerTaskTCB;//任务优先级 #define START_TASK_PRIO 1 //任务堆栈大小 #define START_STK_SIZE 128 //任务堆栈 StackType_t StartTaskStack[START_STK_SIZE]; //任务控制块 StaticTask_t StartTaskTCB; //任务句柄 TaskHandle_t StartTask_Handler; //任务函数 void start_task(void *pvParameters);//任务优先级 #define TASK1_TASK_PRIO 2 //任务堆栈大小 #define TASK1_STK_SIZE 128 //任务堆栈 StackType_t Task1TaskStack[TASK1_STK_SIZE]; //任务控制块 StaticTask_t Task1TaskTCB; //任务句柄 TaskHandle_t Task1Task_Handler; //任务函数 void task1_task(void *pvParameters);//任务优先级 #define TASK2_TASK_PRIO 3 //任务堆栈大小 #define TASK2_STK_SIZE 128 //任务堆栈 StackType_t Task2TaskStack[TASK2_STK_SIZE]; //任务控制块 StaticTask_t Task2TaskTCB; //任务句柄 TaskHandle_t Task2Task_Handler; //任务函数 void task2_task(void *pvParameters);//获取空闲任务地任务堆栈和任务控制块内存因为本例程使用的 //静态内存因此空闲任务的任务堆栈和任务控制块的内存就应该 //有用户来提供FreeRTOS提供了接口函数vApplicationGetIdleTaskMemory() //实现此函数即可。 //ppxIdleTaskTCBBuffer:任务控制块内存 //ppxIdleTaskStackBuffer:任务堆栈内存 //pulIdleTaskStackSize:任务堆栈大小 void vApplicationGetIdleTaskMemory(StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize) {*ppxIdleTaskTCBBufferIdleTaskTCB;*ppxIdleTaskStackBufferIdleTaskStack;*pulIdleTaskStackSizeconfigMINIMAL_STACK_SIZE; } //获取定时器服务任务的任务堆栈和任务控制块内存 //ppxTimerTaskTCBBuffer:任务控制块内存 //ppxTimerTaskStackBuffer:任务堆栈内存 //pulTimerTaskStackSize:任务堆栈大小 void vApplicationGetTimerTaskMemory(StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint32_t *pulTimerTaskStackSize) {*ppxTimerTaskTCBBufferTimerTaskTCB;*ppxTimerTaskStackBufferTimerTaskStack;*pulTimerTaskStackSizeconfigTIMER_TASK_STACK_DEPTH; }//LCD刷屏时使用的颜色 int lcd_discolor[14] {WHITE ,BLACK,BLUE,BRED,GRED,GBLUE,RED,MAGENTA,GREEN,CYAN,YELLOW,BROWN,BRRED,GRAY};int main(void) {HAL_Init(); //初始化HAL库 Stm32_Clock_Init(360,25,2,8); //设置时钟,180Mhzdelay_init(180); //初始化延时函数LED_Init(); //LED初始化ACR_BYTE0_ADDRESSuart_init(115200);SDRAM_Init();LCD_Init(); POINT_COLOR RED;LCD_ShowString(30,10,200,16,16,Apolo STM32F4/F7);LCD_ShowString(30,30,200,16,16,FreeeRTOS Examples);LCD_ShowString(30,50,200,16,16,Task create and delete);LCD_ShowString(30,70,200,16,16,2021/11/20);StartTask_Handler xTaskCreateStatic(start_task,start_task,START_STK_SIZE,NULL, START_TASK_PRIO,StartTaskStack,Task1TaskTCB); vTaskStartScheduler(); //开启任务调度}//开始任务任务函数 void start_task(void *pvParameters) {taskENTER_CRITICAL(); //进入临界区//创建TASK1任务Task1Task_HandlerxTaskCreateStatic((TaskFunction_t )task1_task, (const char* )task1_task, (uint32_t )TASK1_STK_SIZE, (void* )NULL, (UBaseType_t )TASK1_TASK_PRIO, (StackType_t* )Task1TaskStack, (StaticTask_t* )Task1TaskTCB); //创建TASK2任务Task2Task_HandlerxTaskCreateStatic(task2_task, task2_task, TASK2_STK_SIZE,NULL,TASK2_TASK_PRIO,Task2TaskStack,Task2TaskTCB); vTaskDelete(StartTask_Handler); //删除开始任务taskEXIT_CRITICAL(); //退出临界区 } //task1任务函数 void task1_task(void *pvParameters) {u8 task1_num0;POINT_COLOR BLACK;LCD_DrawRectangle(5,110,115,314); //画一个矩形 LCD_DrawLine(5,130,115,130); //画线POINT_COLOR BLUE;LCD_ShowString(6,111,110,16,16,Task1 Run:000);while(1){task1_num; //任务执1行次数加1 注意task1_num1加到255的时候会清零LED0!LED0;//printf(任务1已经执行%d次\r\n,task1_num);if(task1_num5) {if(Task2Task_Handler ! NULL) //任务2是否存在 {vTaskDelete(Task2Task_Handler); //任务1执行5次删除任务2Task2Task_HandlerNULL; //任务句柄清零//printf(任务1删除了任务2!\r\n);}}LCD_Fill(6,131,114,313,lcd_discolor[task1_num%14]); //填充区域LCD_ShowxNum(86,111,task1_num,3,16,0x80); //显示任务执行次数vTaskDelay(1000); //延时1s也就是1000个时钟节拍 } }//task2任务函数 void task2_task(void *pvParameters) {u8 task2_num0;POINT_COLOR BLACK;LCD_DrawRectangle(125,110,234,314); //画一个矩形 LCD_DrawLine(125,130,234,130); //画线POINT_COLOR BLUE;LCD_ShowString(126,111,110,16,16,Task2 Run:000);while(1){task2_num; //任务2执行次数加1 注意task1_num2加到255的时候会清零LED1!LED1;//printf(任务2已经执行%d次\r\n,task2_num);LCD_ShowxNum(206,111,task2_num,3,16,0x80); //显示任务执行次数LCD_Fill(126,131,233,313,lcd_discolor[13-task2_num%14]); //填充区域vTaskDelay(1000); //延时1s也就是1000个时钟节拍 } } 编译即可
http://www.pierceye.com/news/665759/

相关文章:

  • 大连专业企业建站找哪家wordpress 保护wp-login.php
  • 微网站建设哪家便宜想要找个网站做环评公示
  • 建设银行网银网站激活个人简历模板电子版可填写
  • 肃州区建设局网站宁夏百度seo
  • 关于做电影的网站设计西安网站建设制作 熊掌号
  • idc网站建设怎么自己做一个网页链接
  • 网站开发安全模块方案个人网站搭建软件
  • 重庆建设招标造价信息网站个人网站建设与维护
  • 网站备案用户名忘了怎么办嘉兴做外贸网站的公司
  • 1688网站的特点网站制作器手机版下载
  • 兖州网站开发做一个中英文网站多少钱
  • wordpress怎么做网盘站好看的页面图片
  • 建设网站深圳罗湖安徽合肥做网站
  • 一级a做爰片免费网站下载网站快慢由什么决定
  • 网页设计与网站建设 郑州大学网络购物网站备案
  • 美观网站建设哪家好优化大师最新版下载
  • 外贸品牌网站制作wordpress 微信主题
  • 旅游网站开发需求分析网站的根目录的路径
  • easyUI网站开发docker wordpress mysql
  • dede手机网站模板下载黄冈做网站
  • 诸城网站建设葛小燕现在搜索引擎哪个比百度好用
  • 嘉兴做微网站多少钱注册网页需要多少钱
  • 论坛类网站设计大型网站系统解决方案
  • 网站建设中页面设计广告策划书籍
  • 云南省建设工程投标中心网站网页的制作步骤是什么
  • 保定网站设计概述更换动易网站模板的方法
  • 新手如何注册网站域名做 理财网站有哪些
  • 南宁快速建站模板企业网站的开发与应用
  • 网站运营适合什么样的人做企业宣传及介绍ppt
  • 怎么样网站开源小升初在线做试卷的网站