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

可以建设个人网站wordpress微信登录界面

可以建设个人网站,wordpress微信登录界面,食品网站模板,wordpress发不了博文一、实验 实验目的#xff1a;学会使用FreeRTOS的中断管理 创建两个定时器#xff0c;一个优先级为4#xff0c;另一个优先级为6#xff1b;注意#xff1a;系统所管理的优先级范围 #xff1a;5~15 现象#xff1a;两个定时器每1s#xff0c;打印一段字符串#x…一、实验 实验目的学会使用FreeRTOS的中断管理 创建两个定时器一个优先级为4另一个优先级为6注意系统所管理的优先级范围 5~15 现象两个定时器每1s打印一段字符串当关中断时停止打印开中断时持续打印。  实验设计创建两个任务start_task、task1 2个任务的功能如下 start_task用于创建task1任务 task1中断测试任务任务中将调到用关中断和开中断函数来体现对中断的管理。 代码 main.c #include stm32f10x.h #include FreeRTOS.h #include task.h #include freertos_demo.h #include Delay.h #include sys.h #include usart.h #include Timer.h #include delay.hint main(void){ uart_init(9600);Timer_Init();delay_init();// 创建任务FrrrRTOS_Demo(); } freertos_demo.c #include FreeRTOS.h #include task.h #include usart.h #include Timer.h #include delay.h/******************************************************************任务配置****************************************************/ //任务优先级 #define START_TASK_PRIO 1 //任务堆栈大小 #define START_TASK_STACK_SIZE 64 //任务句柄 TaskHandle_t StartTask_Handler; //任务函数 void start_task(void *pvParameters);//任务优先级 #define TASK1_PRIO 2 //任务堆栈大小 #define TASK1_STACK_SIZE 64 //任务句柄 TaskHandle_t Task1_Handler; //任务函数 void task1(void *pvParameters);/******************************************************************任务函数****************************************************/ void FrrrRTOS_Demo(void) {//创建开始任务xTaskCreate((TaskFunction_t )start_task, //任务函数( char* )start_task, //任务名称(uint16_t )START_TASK_STACK_SIZE, //任务堆栈大小(void* )NULL, //传递给任务函数的参数(UBaseType_t )START_TASK_PRIO, //任务优先级(TaskHandle_t* )StartTask_Handler); //任务句柄 // 启动任务调度vTaskStartScheduler(); }void start_task(void *pvParameters) {taskENTER_CRITICAL(); //进入临界区//创建LED0任务xTaskCreate((TaskFunction_t )task1, (const char* )task1, (uint16_t )TASK1_STACK_SIZE, (void* )NULL, (UBaseType_t )TASK1_PRIO, (TaskHandle_t* )Task1_Handler); vTaskDelete(StartTask_Handler); //删除开始任务taskEXIT_CRITICAL(); //退出临界区 }// 任务1函数 void task1(void *pvParameters) {uint8_t task1_num 0;while(1){if(task1_num 5){task1_num 0;printf(关中断\r\n);portDISABLE_INTERRUPTS();delay_xms(5000); //不可以使用vTaskDelay()函数因为此函数会在内部开启中断引起任务切换printf(开中断\r\n);portENABLE_INTERRUPTS();}vTaskDelay(1000);} } Timer.c #include stm32f10x.h // Device header #include usart.hvoid Timer_Init(void) {//RCC打开时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);//选择时基单元的时钟内部时钟一般默认初始化可以写可以不写TIM_InternalClockConfig(TIM2);TIM_InternalClockConfig(TIM3);//配置时基单元TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;//TIM_CKD_DIV1代表1分屏TIM_TimeBaseInitStructure.TIM_ClockDivision TIM_CKD_DIV1;//代表向上计数TIM_TimeBaseInitStructure.TIM_CounterMode TIM_CounterMode_Up;TIM_TimeBaseInitStructure.TIM_Period 10000 - 1;//72MHZ分频7200就是10k,10k计10000个数就是1sTIM_TimeBaseInitStructure.TIM_Prescaler 7200 - 1;//高级定时器才有现在是通用定时器给0TIM_TimeBaseInitStructure.TIM_RepetitionCounter 0;TIM_TimeBaseInit(TIM2, TIM_TimeBaseInitStructure);TIM_TimeBaseInit(TIM3, TIM_TimeBaseInitStructure);//如果不加入这一句会导致复位之后从1开始计数TIM_ClearFlag(TIM2, TIM_FLAG_Update);TIM_ClearFlag(TIM3, TIM_FLAG_Update);//TIM_IT_Update代表更新中断中断控制用来控制某个中断能不能通往NIVCTIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel TIM2_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority 4;NVIC_InitStructure.NVIC_IRQChannelSubPriority 0;NVIC_Init(NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel TIM3_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority 15; //新版RTOS可管理的NVIC中断11~15NVIC_InitStructure.NVIC_IRQChannelSubPriority 0;NVIC_Init(NVIC_InitStructure);//启动定时器TIM_Cmd(TIM2, ENABLE);TIM_Cmd(TIM3, ENABLE); }void TIM2_IRQHandler(void) {if (TIM_GetITStatus(TIM2, TIM_IT_Update) SET){printf(优先级4\r\n);TIM_ClearITPendingBit(TIM2, TIM_IT_Update);} }void TIM3_IRQHandler(void) {if (TIM_GetITStatus(TIM3, TIM_IT_Update) SET){printf(优先级15\r\n);TIM_ClearITPendingBit(TIM3, TIM_IT_Update);} } 二、实验现象 三、重点  开中断和关中断函数 portDISABLE_INTERRUPTS(); //关中断 portENABLE_INTERRUPTS(); //开中断 关中断之后不能使用vTaskDelay函数此函数中会打开中断。Delay函数不能使用的可以找找我的文章有专门修改后适用于FreeRTOS操作系统的延迟函数 FreeRTOS可管理的中断优先级版本不一样可管理的优先级就不一样; 是由FreeRTOSConfig.h文件里面的宏决定 #define configKERNEL_INTERRUPT_PRIORITY 255  // 内核中断优先级最低优先级 #define configMAX_SYSCALL_INTERRUPT_PRIORITY 191   // 允许调用 FreeRTOS API 的最高中断优先级优先级 11 //可管理的中断优先级11 到 15 适用于STM32F103C8T6项目带注释完整的FreeRTOSConfig.h文件 /** FreeRTOS V202212.01* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.** Permission is hereby granted, free of charge, to any person obtaining a copy of* this software and associated documentation files (the Software), to deal in* the Software without restriction, including without limitation the rights to* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of* the Software, and to permit persons to whom the Software is furnished to do so,* subject to the following conditions:** The above copyright notice and this permission notice shall be included in all* copies or substantial portions of the Software.** THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.** https://www.FreeRTOS.org* https://github.com/FreeRTOS**/#ifndef FREERTOS_CONFIG_H #define FREERTOS_CONFIG_H// 如果需要支持操作系统可以取消注释以下宏定义 //#define SYSTEM_SUPPORT_OS 1/*-----------------------------------------------------------* 应用程序特定的定义。** 这些定义应根据您的硬件和应用程序需求进行调整。** 这些参数在 FreeRTOS API 文档的“配置”部分中有详细描述* 文档可在 FreeRTOS.org 网站上找到。** 参见 http://www.freertos.org/a00110.html*----------------------------------------------------------*/// 将 FreeRTOS 的中断处理函数映射到 CMSIS 标准的中断处理函数 #define xPortPendSVHandler PendSV_Handler // PendSV 中断处理函数 //#define xPortSysTickHandler SysTick_Handler // SysTick 中断处理函数注释掉使用自定义的 SysTick_Handler #define vPortSVCHandler SVC_Handler // SVC 中断处理函数// 启用获取当前任务句柄的 API #define INCLUDE_xTaskGetCurrentTaskHandle 1/*-------------------------------- FreeRTOS 内核配置 --------------------------------*/ #define configUSE_PREEMPTION 1 // 启用抢占式调度 #define configUSE_IDLE_HOOK 0 // 禁用空闲任务钩子函数 #define configUSE_TICK_HOOK 0 // 禁用时钟节拍钩子函数 #define configCPU_CLOCK_HZ ( ( unsigned long ) 72000000 ) // CPU 时钟频率72MHz #define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) // 系统节拍频率1000Hz1ms 一个节拍 #define configMAX_PRIORITIES ( 5 ) // 最大任务优先级数 #define configMINIMAL_STACK_SIZE ( ( unsigned short ) 128 ) // 空闲任务的最小堆栈大小 #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 17 * 1024 ) ) // 系统堆的总大小17KB #define configMAX_TASK_NAME_LEN ( 16 ) // 任务名称的最大长度 #define configUSE_TRACE_FACILITY 0 // 禁用可视化跟踪调试功能 #define configUSE_16_BIT_TICKS 0 // 使用 32 位 Tick 计数器 #define configIDLE_SHOULD_YIELD 1 // 空闲任务在有同等优先级的用户任务时主动让出 CPU/*-------------------------------- FreeRTOS API 包含配置 --------------------------------*/ // 以下宏定义用于控制是否包含特定的 FreeRTOS API 函数 #define INCLUDE_vTaskPrioritySet 1 // 包含任务优先级设置函数 #define INCLUDE_uxTaskPriorityGet 1 // 包含获取任务优先级函数 #define INCLUDE_vTaskDelete 1 // 包含任务删除函数 #define INCLUDE_vTaskCleanUpResources 0 // 不包含任务资源清理函数 #define INCLUDE_vTaskSuspend 1 // 包含任务挂起函数 #define INCLUDE_vTaskDelayUntil 1 // 包含绝对延时函数 #define INCLUDE_vTaskDelay 1 // 包含相对延时函数 #define INCLUDE_vTaskResumeFromISR 1 // 包含从中断恢复任务函数 #define INCLUDE_xTaskGetSchedulerState 1 // 包含获取调度器状态函数/*-------------------------------- 中断优先级配置 --------------------------------*/ /*-------------------------------- 可管理的中断优先级11 到 15对应 NVIC 优先级 191 到 255 --------------------------------*/// Cortex-M3/M4 的 NVIC 中断优先级配置 #define configKERNEL_INTERRUPT_PRIORITY 255 // 内核中断优先级最低优先级 // configMAX_SYSCALL_INTERRUPT_PRIORITY 不能设置为 0 // 参见 http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html #define configMAX_SYSCALL_INTERRUPT_PRIORITY 191 // 允许调用 FreeRTOS API 的最高中断优先级优先级 11// STM32 库使用的中断优先级范围是 0-1515 对应最低优先级 255 #define configLIBRARY_KERNEL_INTERRUPT_PRIORITY 15 // 内核中断优先级最低优先级#endif /* FREERTOS_CONFIG_H */
http://www.dnsts.com.cn/news/8006.html

相关文章:

  • 保险网站有哪些平台我的网站设计联盟
  • 福建有没有网站做鞋子一件代发有趣的网站有哪些
  • 网上做网站网站代理赚钱吗网站转备案
  • 90设计网站官网首页品牌logo查询网
  • 公司网站建设方案书例文学校网站首页
  • 做网站的模板软件项目开发的阶段和任务
  • 一般做外单的有哪些网站手机域名免费注册
  • 东莞网站建设-拥有多年专业广州做网站的
  • 南通网站建设 南大街抖音引流推广怎么做
  • 东莞网站建设少儿托管wordpress图片管理
  • 怎么找一家公司的网站网页设计的首页版式
  • 网站制作算什么费用找推网
  • 国建设网站西安行业网站制作
  • 网站后台设置关键词在哪设杭州公司做网站
  • 一级a做爰片免费网站下载设计公司装修效果图
  • 做营销网站建设价格wordpress+主题+引入js
  • 买网站不给我备案广州网站站建设培训
  • 邯郸网站建设兼职工业企业网站建设费
  • 做打牌的网站怎么办ps如何做psd模板下载网站
  • 《网站建设与维护》讲义简约大气展厅效果图
  • 正能量软件不良网站直播wordpress 跳转特效
  • 欢迎访问陕西省交通建设集团公司网站家具网站asp
  • 兰甘肃网站建设clouder认证考试网站建设
  • 一个新的网站怎么做优化一家专业做导购的网站
  • php 电子商务网站建设做网站美工工资多少
  • 佛山专业网站设计公司wordpress做简单的商城
  • php网站模块修改绍兴网站专业制作
  • 北京网站手机站建设公司电话宁波建设集团几个分公司
  • 分析竞争对手网站建设摩托车官网中国
  • 360建设网站免费做黑彩票的网站赚钱吗