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

.net 大型网站开发百度搜索名字排名优化

.net 大型网站开发,百度搜索名字排名优化,专业做俄语网站建设,旅游网站开发的意义一、实验目标 创建两个动态任务,栈空间大小均为128字。startTask、Task1。startTask仅运行一次,负责task1任务的创建,startTask任务的删除。Task1负责5S关闭一次中断,5S开启一次中断。 注:本实验基于正点原子FreeRTOS…

一、实验目标


        创建两个动态任务,栈空间大小均为128字。startTask、Task1。startTask仅运行一次,负责task1任务的创建,startTask任务的删除。Task1负责5S关闭一次中断,5S开启一次中断。

注:本实验基于正点原子FreeRTOS教程的学习总结。

  二、实验准备

1.FreeRTOS的Keil动态任务创建与删除程序

2.STM3F407开发板

3.HAL_Init()函数修改

        在main()函数中找到HAL_Init()函数,并跳转到函数定义位置,在函数中找到NVIC中断分组函数设置为第四组,即NVIC_PRIORITYGROUP_4。

  /* Set Interrupt Group Priority */HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);

        设置为NVIC_PRIORITYGROUP_4是因为FreeRTOS仅能管理优先级为5-15的中断,而STM32的优先级分组方式4,设置中断优先级为0-15,这样方便FreeRTOS管理中断。

4.基本定时器中断初始化

        需要添加基本定时器.c文件,并在mian函数中初始化基本定时器中断。

4.1btim.h头文件修改

        首先,在.h文件中添加基本定时的配置信息。这里使用定时器6/7,分别定时为1S输出一次信息。

#define BTIM_TIM6_INT                       TIM6
#define BTIM_TIM6_INT_IRQn                  TIM6_DAC_IRQn
#define BTIM_TIM6_INT_IRQHandler            TIM6_DAC_IRQHandler
#define BTIM_TIM6_INT_CLK_ENABLE()          do{ __HAL_RCC_TIM6_CLK_ENABLE(); }while(0)  /* TIM6 时钟使能 */#define BTIM_TIM7_INT                       TIM7
#define BTIM_TIM7_INT_IRQn                  TIM7_IRQn
#define BTIM_TIM7_INT_IRQHandler            TIM7_IRQHandler
#define BTIM_TIM7_INT_CLK_ENABLE()          do{ __HAL_RCC_TIM7_CLK_ENABLE(); }while(0)  /* TIM7 时钟使能 */
/******************************************************************************************/void btim_tim6_int_init(uint16_t arr, uint16_t psc);    /* 基本定时器 定时中断初始化函数 */
void btim_tim7_int_init(uint16_t arr, uint16_t psc);    /* 基本定时器 定时中断初始化函数 */

 4.2btim.c源文件修改

        定义两个定时器句柄,并进行中断初始化。

TIM_HandleTypeDef g_tim6_handler;         /* 定时器参数句柄 */
TIM_HandleTypeDef g_tim7_handler;         /* 定时器参数句柄 */
//定时器6中断初始化函数
void btim_tim6_int_init(uint16_t arr, uint16_t psc)
{g_tim6_handler.Instance = BTIM_TIM6_INT;                      /* 定时器x */g_tim6_handler.Init.Prescaler = psc;                          /* 分频 */g_tim6_handler.Init.CounterMode = TIM_COUNTERMODE_UP;         /* 递增计数模式 */g_tim6_handler.Init.Period = arr;                             /* 自动装载值 */HAL_TIM_Base_Init(&g_tim6_handler);HAL_TIM_Base_Start_IT(&g_tim6_handler);                       /* 使能定时器x和定时器更新中断 */
}
//定时器7中断初始化函数
void btim_tim7_int_init(uint16_t arr, uint16_t psc)
{g_tim7_handler.Instance = BTIM_TIM7_INT;                      /* 定时器x */g_tim7_handler.Init.Prescaler = psc;                          /* 分频 */g_tim7_handler.Init.CounterMode = TIM_COUNTERMODE_UP;         /* 递增计数模式 */g_tim7_handler.Init.Period = arr;                             /* 自动装载值 */HAL_TIM_Base_Init(&g_tim7_handler);HAL_TIM_Base_Start_IT(&g_tim7_handler);                       /* 使能定时器x和定时器更新中断 */
}

        定义底层驱动。设置定时器6抢占优先级为6,定时器7抢占优先级为4。

void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)
{if (htim->Instance == BTIM_TIM6_INT){BTIM_TIM6_INT_CLK_ENABLE();                     /* 使能TIMx时钟 */HAL_NVIC_SetPriority(BTIM_TIM6_INT_IRQn, 6, 0); /* 抢占6 */HAL_NVIC_EnableIRQ(BTIM_TIM6_INT_IRQn);         /* 开启ITMx中断 */}if (htim->Instance == BTIM_TIM7_INT){BTIM_TIM7_INT_CLK_ENABLE();                     /* 使能TIMx时钟 */HAL_NVIC_SetPriority(BTIM_TIM7_INT_IRQn, 4, 0); /* 抢占4 */HAL_NVIC_EnableIRQ(BTIM_TIM7_INT_IRQn);         /* 开启ITMx中断 */}
}

         添加中断服务函数与中断回调函数。

//中断服务函数
void BTIM_TIM6_INT_IRQHandler(void)
{HAL_TIM_IRQHandler(&g_tim6_handler);  /* 定时器回调函数 */
}
void BTIM_TIM7_INT_IRQHandler(void)
{HAL_TIM_IRQHandler(&g_tim7_handler);  /* 定时器回调函数 */
}
//回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if (htim->Instance == BTIM_TIM6_INT){printf("TIME6正在运行,优先级为6!!\r\n");}else if (htim->Instance == BTIM_TIM7_INT){printf("TIME7正在运行,优先级为4!!!!\r\n");}
}

5.mian函数初始化

6.所需API函数介绍

        portDISABLE_INTERRUPTS函数用来关闭FreeRTOS所管理的中断。

    #define portDISABLE_INTERRUPTS()                  vPortRaiseBASEPRI()

         portENABLE_INTERRUPTS函数用来开启FreeRTOS所管理的中断。

    #define portENABLE_INTERRUPTS()                   vPortSetBASEPRI( 0 )

  三、代码编写

3.1修改Task1的任务函数内容

        Task1实现5S关中断,5S开中断。

//任务1,实现5S关中断,5S开中断
void task1(void *pvParameters)
{uint8_t task1_num = 0;while(1){if(++task1_num == 5){task1_num = 0;portDISABLE_INTERRUPTS();printf("关中断\r\n");delay_ms(5000);portENABLE_INTERRUPTS();printf("开中断\r\n");delay_ms(5000);}vTaskDelay(100);}
}

四、实验现象

        系统复位后,实现5S关中断,5S开中断。关闭中断时,被FreeRTOS管理的优先级为6的定时器6停止工作,而优先级为4的定时器7不受影响。

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

相关文章:

  • 微网站是用什么代码制作网站提交入口百度
  • 网站建设实施方案ppt手机app免费制作平台
  • 教育网站报名免费淘宝关键词工具
  • 政府网站建设总体情况网站备案查询官网
  • 做网站被骗了怎么办想建立自己的网站怎么建立
  • 海外建站服务平台备案查询网
  • win7在局域网做网站考拉seo
  • 小视频解析网站怎么做曲靖seo建站
  • 锦州网站建设信息淘宝seo优化是什么
  • 廊坊哪里有做网站建设的佛山竞价账户托管
  • 微信网站系统网络管理系统
  • 除了外链 还有什么办法使网站提高排名广丰网站seo
  • 做网站为什么要去工厂关键词挖掘排名
  • 中国寰球工程有限公司网站设计湖南网络推广排名
  • 抚州网站建设免费职业技能培训网
  • 公司网站没有备案是不是违法的腾讯推广一次广告多少钱
  • 移动端处理器天梯图百度网站怎么优化排名靠前
  • 做外贸有哪些网站比较好产品推广计划书怎么写
  • 网站建设新闻发布注意什么百度广告优化
  • 建设电子商务网站要多少钱竞价排名广告
  • 如何做网站优化seo百度app官方下载安装
  • 长沙建网站设计甘肃省seo关键词优化
  • 网站建设河南百度收录入口
  • wordpress 媒体库代码aso优化什么意思是
  • 靠谱的做网站的公司优化营商环境条例心得体会
  • 如何给异地网站做镜像seo技术培训广东
  • 房地产公司如何做网站百度网站制作联系方式
  • 自己做导航网站营销型网站建设
  • 网站数据抓取怎么做网站工具查询
  • 派出所网站建设方案巢湖网站制作