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

东莞专业网站建设公司衡阳百度网站建设

东莞专业网站建设公司,衡阳百度网站建设,已经备案的域名做电影网站,威海网络公司目录 一、SysTick定时器 1、SysTick寄存器介绍 #xff08;1#xff09;控制及状态寄存器 #xff08;2#xff09;重装载数值寄存器 #xff08;3#xff09;当前数值寄存器 2、SysTick寄存器配置函数 二、FreeRTOS中的SysTick定时器 1、SysTick配置函数及分析 …目录 一、SysTick定时器 1、SysTick寄存器介绍 1控制及状态寄存器 2重装载数值寄存器 3当前数值寄存器 2、SysTick寄存器配置函数 二、FreeRTOS中的SysTick定时器 1、SysTick配置函数及分析 2、SysTick中断函数 三、其他操作配置FreeRTOS的SysTick 1、找到头文件 FreeRTOSConfig.h 有如下定义。 2、搜索 configTICK_RATE_HZ在port.c中。 3、搜索 portNVIC_SYSTICK_CTRL_REG在port.c中。 4、下面证明地址是不是SYSTICK的配置地址。 5、跳转到 SysTick 定义处。 一、SysTick定时器 SysTick系统定时器是属于内核中的一个外设内嵌在NVIC中。该定时器是一个24位的向下递减的计数器。在裸机编程中常用做延时函数而在FreeRTOS中则用来给系统提供时钟的因此非常重要。 1、SysTick寄存器介绍 SysTick共有4个相关寄存器通常只用到3个(校准寄存器少用)。 寄存器名称寄存器描述CTRLSysTick控制及状态寄存器LOADSysTick重装载数值寄存器VALSysTick当前数值寄存器CALIBSysTick校准数值寄存器 1控制及状态寄存器 可通过读取第16位判断计数是否到0。 2重装载数值寄存器 用来存放重装载数的改变该值以调节计数时间。数值范围0—2^24-1即0-16777215。 3当前数值寄存器 该寄存器的值在递减计数到0时会自动重载数值为重装载数值寄存器内的值。 2、SysTick寄存器配置函数 在库文件core_cm4.h (M4内核)中有相关配置函数也可以重写。 __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) /*参数ticks为计数值,最大2^24(已有减1操作)*/ {if ((ticks - 1) SysTick_LOAD_RELOAD_Msk) return (1);/*判断传入的值是否满足不能超过0xffffff*/SysTick-LOAD ticks - 1; /*将数值传入重装载数值寄存器*/NVIC_SetPriority (SysTick_IRQn, (1__NVIC_PRIO_BITS) - 1); /*设置Systick中断优先级*/SysTick-VAL 0; /*清空当前值寄存器*/SysTick-CTRL SysTick_CTRL_CLKSOURCE_Msk |SysTick_CTRL_TICKINT_Msk |SysTick_CTRL_ENABLE_Msk; /* SysTick_CTRL_CLKSOURCE_Msk 12 *//* SysTick_CTRL_TICKINT_Msk 11 *//* SysTick_CTRL_ENABLE_Msk 10 *//*将第0、1、2位置1即使能定时器使能中断选择系统时钟168M或72M*/return (0); } 二、FreeRTOS中的SysTick定时器 在FreeRTOS中SysTick定时器尤为重要因为它是给FreeRTOS系统提供时钟的。在FreeRTOS中任务的切换即每个任务运行的时间是由SysTick定时器提供的。 1、SysTick配置函数及分析 在FreeRTOS中已经提供了SysTick配置的函数vPortSetupTimerInterrupt()函数在port.c文件中。当调用了开启任务调度函数vTaskStartScheduler()后里面就会调用该函数完成SysTick的配置。vPortSetupTimerInterrupt()函数分析   #if ( configOVERRIDE_DEFAULT_TICK_CONFIGURATION 0 ) /*条件编译*/__weak void vPortSetupTimerInterrupt( void ){/* Calculate the constants required to configure the tick interrupt. */#if ( configUSE_TICKLESS_IDLE 1 ) /*条件编译这段不编译*/{ulTimerCountsForOneTick ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ );xMaximumPossibleSuppressedTicks portMAX_24_BIT_NUMBER / ulTimerCountsForOneTick;ulStoppedTimerCompensation portMISSED_COUNTS_FACTOR / ( configCPU_CLOCK_HZ / configSYSTICK_CLOCK_HZ );}#endif /* configUSE_TICKLESS_IDLE */portNVIC_SYSTICK_CTRL_REG 0UL; /*清空控制及状态寄存器*/portNVIC_SYSTICK_CURRENT_VALUE_REG 0UL; /*清空当前值寄存器*//*设置重装载数值寄存器数值*//*168000000/1000 168000重装载值168000/168M0.001S1MS*/portNVIC_SYSTICK_LOAD_REG ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL;/*设置控制及状态寄存器*/ portNVIC_SYSTICK_CTRL_REG ( portNVIC_SYSTICK_CLK_BIT | portNVIC_SYSTICK_INT_BIT | portNVIC_SYSTICK_ENABLE_BIT );/*( 1UL 2UL ) | ( 1UL 1UL ) | ( 1UL 0UL ) *//*选择处理器时钟、开定时器中断、使能定时器*/}#endif /* configOVERRIDE_DEFAULT_TICK_CONFIGURATION */ 2、SysTick中断函数 在SysTick中断函数中并不是直接执行任务切换而是将xTickCount进行加1操作xTickCount是FreeRTOS的系统时钟节拍数具体实现函数则是xTaskIncrementTick()该函数在中断函数中被调用。中断函数的实现在port.c文件中也有定义xPortSysTickHandler()因此在SysTick中断函数中直接调用该函数即可。 void SysTick_Handler(void) { if(xTaskGetSchedulerState()!taskSCHEDULER_NOT_STARTED) //系统已经运行{xPortSysTickHandler(); //调用port.c中已写好的中断函数}} 三、其他操作配置FreeRTOS的SysTick 1、找到头文件 FreeRTOSConfig.h 有如下定义。 #define configCPU_CLOCK_HZ ((unsigned long)168000000) //CPU频率 #define configTICK_RATE_HZ (( portTickType )1000) //时钟节拍频率这里设置为1000周期就是1ms2、搜索 configTICK_RATE_HZ在port.c中。 portNVIC_SYSTICK_LOAD_REG ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL;portNVIC_SYSTICK_CTRL_REG ( portNVIC_SYSTICK_CLK_BIT | portNVIC_SYSTICK_INT_BIT | portNVIC_SYSTICK_ENABLE_BIT );3、搜索 portNVIC_SYSTICK_CTRL_REG在port.c中。 #define portNVIC_SYSTICK_CTRL_REG ( * ( ( volatile uint32_t * ) 0xe000e010 ) ) #define portNVIC_SYSTICK_LOAD_REG ( * ( ( volatile uint32_t * ) 0xe000e014 ) )4、下面证明地址是不是SYSTICK的配置地址。 STM32库函数中core_cm4.h中配置systick函数为 uint32_t SysTick_Config(uint32_t ticks) SysTick-LOAD (uint32_t)(ticks - 1UL); /* set reload register */NVIC_SetPriority (SysTick_IRQn, (1UL __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */SysTick-VAL 0UL; /* Load the SysTick Counter Value */SysTick-CTRL SysTick_CTRL_CLKSOURCE_Msk |SysTick_CTRL_TICKINT_Msk |SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */return (0UL); /* Function successful 5、跳转到 SysTick 定义处。 #define SCS_BASE (0xE000E000UL) /*! System Control Space Base Address */ #define ITM_BASE (0xE0000000UL) /*! ITM Base Address */ #define DWT_BASE (0xE0001000UL) /*! DWT Base Address */ #define TPI_BASE (0xE0040000UL) /*! TPI Base Address */ #define CoreDebug_BASE (0xE000EDF0UL) /*! Core Debug Base Address */ #define SysTick_BASE (SCS_BASE 0x0010UL) /*! SysTick Base Address */ #define NVIC_BASE (SCS_BASE 0x0100UL) /*! NVIC Base Address */ #define SCB_BASE (SCS_BASE 0x0D00UL) /*! System Control Block Base Address */#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*! System control Register not in SCB */ #define SCB ((SCB_Type *) SCB_BASE ) /*! SCB configuration struct */ #define SysTick ((SysTick_Type *) SysTick_BASE ) /*! SysTick configuration struct */FreeRTOS学习笔记——SysTick中断-CSDN博客 STM32使用FreeRTOS时SysTick哪里配置的_systic在哪配的-CSDN博客 FreeRTOS 之六 任务调度原理解析Systick、PendSV、SVC_freertos svc-CSDN博客 【STM32/FreeRTOS】SysTick定时器及FreeRTOS系统节拍_freertos systick-CSDN博客
http://www.hkea.cn/news/14291878/

相关文章:

  • 指定关键字 网站有更新就提醒wordpress post class
  • 三亚网站建设绿色大气网站
  • 网站搜索功能如何实现做外贸哪个英文网站好
  • 网站建设创意广告2018做网站前景好么
  • 石家庄市交建高速公路建设管理有限公司网站房城乡建设部网站
  • 网站营销策略组合濮阳网
  • 音乐网站设计外国做网站超速云
  • 哪个网站做学历认证自己建网站还是淘宝
  • jsp淘宝客网站市北区小型网页设计培训
  • wordpress文章页调用seo服务方法
  • 一个网站可以设多少关键词淘宝开店流程步骤
  • 网页制作与网站建设英文翻译给几个手机网站
  • 沈阳市城市建设网站3d溜溜网装修效果图
  • 汕尾网站seo网站主机在哪里注册呢
  • 宜昌模板网站建设灌云网站制作
  • 自建网站和租用空间网站wordpress多重筛选器
  • 网站内容建设方案梨树做网站
  • 电子商务网站建设与管理考试公司网站建设北京
  • 安徽省建设部干部网站东莞关键字排名优化
  • 2017最新网站设计风格小程序如何开发
  • 软装素材网站有哪些深圳网站建设有免费的吗
  • 网站登录模版 下载公司网站建设网络推广
  • 中国网站建设网网易做相册旅游网站
  • 石家庄手机网站网络推广商城网站
  • 金华网站建设工程网站建设国内服务器做网站要备案
  • 无锡专业做网站的公司哪家好在线网站设计工具
  • 景安网站上传完还要怎么做wordpress指定标签不同样式
  • 成都哪里做网站好asp网站好还是php网站好
  • 动易网站首页错位有什么推广方法
  • 手机微网站平台登录入口苏州相城区最新通告