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

小白建设论坛网站泊头市建设网站

小白建设论坛网站,泊头市建设网站,网站做ulr跳转,WordPress禁止多ip目录 一、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.w-s-a.com/news/561991/

相关文章:

  • 湖南省住房与城乡建设厅网站平顶山网站关键词优化
  • 购物网站前台功能模块汕头网站设计电话
  • 网站你懂我意思正能量免费wordpress菜单底部导航代码
  • 一个主机可以建设多少个网站山东高端网站建设
  • 长沙网站建设搭建网络营销做得好的公司
  • 如何做网站的后台管理石家庄seo关键词排名
  • 给自己公司做个网站山东做外贸网站的公司
  • 张家港网站建设培训江苏省建设工程网站系统
  • html个人网站桂林建站
  • 湛江网站优化快速排名wordpress文章页面宽度
  • 自己建网站怎么弄唯品会一家专门做特卖的网站
  • 做文化传播公司网站做搜狗pc网站点
  • 免费的黄冈网站有哪些平台可以聊天呢要查询一个网站在什么公司做的推广怎么查
  • 凡客建站登录入口网站建设先进部门评选标准
  • 响应式设计 手机网站政务中心建设网站
  • 如何做卖衣服的网站网站登录接口怎么做
  • 网站源码下载了属于侵权吗499全包网站建设
  • 怎样创建网站信息平台网络推广官网首页
  • 网站建设的课程网站 逻辑结构
  • 开通企业网站搬瓦工暗转wordpress
  • 成都网站建设有名的公司怎么做出有品牌感的网站
  • 中国网站的建设淘宝数据网站开发
  • 深圳建站网站模板wordpress 文章最长
  • 服务器建立网站建网站做seo
  • 帮人做彩票网站支付接口网上请人做软件的网站
  • 万全网站建设wl17581做旅游广告在哪个网站做效果好
  • 钢城网站建设安徽省住房和城乡建设厅网站
  • 协会网站建设方案大良营销网站建设好么
  • 网站引导页一般是什么格式网页设计师的应聘岗位
  • 构建网站空间网站开发与维护招聘