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

网站seo诊断分析和优化方案南宁市网站建设价格

网站seo诊断分析和优化方案,南宁市网站建设价格,域名服务器的正向解析,上海app开发外包一、SysTick是什么#xff1f; Systick定时器是一个24bit的倒计时#xff08;向下计数#xff09;定时器#xff0c;功能就是实现简单的延时。 SysTick 是一种系统定时器#xff0c;通常在嵌入式系统中使用。它是 ARM Cortex-M 处理器的一个特殊定时器#xff0c;用于提…一、SysTick是什么 Systick定时器是一个24bit的倒计时向下计数定时器功能就是实现简单的延时。 SysTick 是一种系统定时器通常在嵌入式系统中使用。它是 ARM Cortex-M 处理器的一个特殊定时器用于提供系统级的定时服务。SysTick 可以用于生成定时中断以便执行特定的任务或进行系统级的时间跟踪。 例如计数初值为100经过一个时钟周期后计数值减一即999897……10计数至0后又重新开始从100开始倒计数至0。​ 可以借此做精准延时。 二、SysTick框架图 因为SysTick是属于内核的一部分其被捆绑在NVIC中用于产生SYSTICK异常。 三、SysTick组成 ​ SysTick包含四个寄存器都是24位的寄存器分别是 (1) SysTick-CTRL SysTick控制及状态寄存器 (-- 0xE000 E010 (2) SysTick-LOAD SysTick重装载寄存器 – 0xE000 E014 (3) SysTick-VAL SysTick当前值寄存器 – 0xE000 E018 (4) SysTick-CALIB SysTick校准值寄存器 – 0xE000 E01C 四、SysTick时钟知识点 1首先明白频率Hz与时间S的转换。 ●1Hz代表每秒周期震动1次 60Hz代表每秒周期震动60次。假如滴答时钟的频率是72MHZ72MHz表示每秒钟有72,000,000个时钟周期。那让滴答时钟计1次时间过去了1/72μs也就是一个时钟周期为1/72000000 s 1/72 us。 ●定时1us就需要72个时钟周期。 ●定时1s就需要72000个时钟周期。 2为什么需要装载预期值-1 答装载值就是装载的时钟周期个数。SysTick 定时器的计数是从 LOAD 装载值寄存器的值递减到零的所以如果你希望实现 n 个时钟周期的延时你需要将 LOAD 寄存器设置为 n - 1。如系统时钟频率为72MHz经过8分频后频率为9MHz。即1s震动9000 000个周期。所以装载值为8999 000计数器从8999000减到0总共经过 9000000 个时钟周期则正好为1s的时间即实现定时1s。 3为什么选择经过8分频的外部时钟而不选择内部时钟 答选择使用外部时钟而不是内部时钟是为了保证定时器的精度和稳定性。 内部时钟是由微控制器内部提供的时钟源通常频率相对较低。在某些情况下使用内部时钟作为SysTick的时钟源可能会导致定时器的溢出时间过长无法满足精确的延时需求。 外部时钟例如外部晶体振荡器或主芯片提供的外部时钟信号具有较高的频率和稳定性。使用外部时钟作为SysTick的时钟源可以提供更高的精度和可靠性。对于需要较准确的延时操作或时间计量的应用选择外部时钟是更好的选择。 因此在该代码中选择使用外部时钟来配置SysTick定时器以确保精确和稳定的延时功能。 4时钟源选择 --------库函数 SysTick_CLKSourceConfig时钟源 ●时钟源可选参数 SysTick_CLKSource_HCLK_Div8 经过8分频的外部时钟 SysTick_CLKSource_HCLK 内部时钟 ●函数代码如下 #define SysTick_CLKSource_HCLK_Div8 ((uint32_t)0xFFFFFFFB) //经过8分频的外部时钟 #define SysTick_CLKSource_HCLK ((uint32_t)0x00000004) //内部时钟 #define IS_SYSTICK_CLK_SOURCE(SOURCE) (((SOURCE) SysTick_CLKSource_HCLK) || \((SOURCE) SysTick_CLKSource_HCLK_Div8))void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource) //时钟源选择库函数 {/* Check the parameters */assert_param(IS_SYSTICK_CLK_SOURCE(SysTick_CLKSource));if (SysTick_CLKSource SysTick_CLKSource_HCLK){SysTick-CTRL | SysTick_CLKSource_HCLK;}else{SysTick-CTRL SysTick_CLKSource_HCLK_Div8;} }--------寄存器 SysTick-CTRL ~(12); //选择外部时钟必须清零默认是1内核时钟 SysTick-CTRL |(12); //选择内核时钟。4延时范围 ●如系统时钟频率为72MHz经过8分频后为9MHz。1s的时钟周期个数为9000 0001ms的时钟周期个数为90001us的时钟周期个数为9。 ●VAL寄存器以及LOAD寄存器都是24位的它的最大值是1111 1111 1111 1111 1111 1111转化乘十进制后是16777215。即装载的最大十周周期个数为16777215。 ●秒级别的定时器一次最大定时时长为16777215 / 9000000 s。 ●毫秒级别的定时器一次最大的定时时长16777215/9000 ms也就是1864.135毫秒由于对于毫秒只能取整也就是1864毫秒。 ●微秒级别的定时器一次最大定时时长是16777215/91864135 us。 这就是Systick定时器循环一次所能达到的最大定时时长。也就是装载值的最大范围。当然也可以通过循环嵌套来实现更长时间的定时。 五、SysTick两种功能 1查询方式延时功能 只需要定时器工作一个周期也就是从重装载值减到0的一个过程执行一次后需要关闭定时器不然它还会不停的从重装载值减到0然后又从重装载值减到0无限循环。 实现功能实现us、ms级别的延时函数。 伪代码 实现系统的us延时参数 {1.选择时钟 建议选择经过8分频后的外部时钟。2.写入重装载值设为预期值-1。3.禁止中断。4.清空计数器。5.使能计数器。6.等待时间到达等待标志位置1。7.关闭计数器。8.清空计数器。 }具体代码 // uint32_t SystemCoreClock SYSCLK_FREQ_72MHz; /*! System Clock Frequency (Core Clock) */ void delay_init() {SysTick-CTRL ~(12); //1.选择外部时钟必须清零。默认是1为内核时钟。//SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); // 1.选择外部时钟 HCLK/8 s_fac_numSystemCoreClock/8; //选择的经过8分频的外部时钟所以要将系统时钟72Mhz/8。此时频率为9MHz。1s震动9 000 000 次。us_fac_numClock_Div8_after/1000000; //1us 震动9次。1s1000 000 us.ms_fac_num(u16)fac_us*1000; //1个ms需要的systick时钟数 。 } void delay_us(u32 nus) { u32 temp; SysTick-LOADnus*us_fac_num-1; //2.写入装载值 SysTick-CTRL ~(0x01 1); //3.禁止中断SysTick-VAL0x00; //4.清空计数器当前值这里大家一定要注意必须使得当前寄存器的值VAL等于0 SysTick-VAL (0x00);只有当VAL值为0时计数器自动重载RELOAD。下面同理。SysTick-CTRL |(0x010); //5.使能计数器开始倒数。while( (SysTick-CTRL(116)) 0);//6.等待时间到达 SysTick-CTRL~(0x010); //7.关闭计数器SysTick-VAL 0X00; //8.清空计数器当前值 }void delay_ms(u32 nus) { u32 temp; SysTick-LOADnus*ms_fac_num-1; //2.写入装载值 SysTick-CTRL ~(0x01 1); //3.禁止中断SysTick-VAL0x00; //4.清空计数器当前值这里大家一定要注意必须使得当前寄存器的值VAL等于0 SysTick-VAL (0x00);只有当VAL值为0时计数器自动重载RELOAD。下面同理。SysTick-CTRL |(0x010); //5.使能计数器开始倒数。while( (SysTick-CTRL(116)) 0);//6.等待时间到达 SysTick-CTRL~(0x010); //7.关闭计数器SysTick-VAL 0X00; //8.清空计数器当前值 }2中断功能 利用中断一定时间进一次中断以此来实现一个时间片轮询的操作方式。这时候就需要计数器一直计数了所以不能计数完成后就关闭计数器了。 实现功能每过一次设定的ms发送一次’123456’。 伪代码 系统滴答的初始化 {1.选择外部滴答的时钟源。2.配置系统滴答的重装载值设为预期值-1。3.使能中断。4.当前值清零--清空计数器。5.设置优先级。6.使能NVIC响应。7.使能计数器。 } 中断服务函数 {1.检测标志与清除标志2.执行操作。 }具体代码 #include SysTick.h u16 SysTick_us; u16 SysTick_ms; /******************************* 函数名SysTick_Init 函数功能初始化系统滴答选择外部时钟 函数形参u32 sysclk 系统时钟72MHZ 函数返回值void 备注开启1ms中断 ********************************/ void SysTick_ms_Init(u32 nus) //72HZ { SysTick-CTRL ~(12); //1.选择外部时钟必须清零。默认是1为内核时钟。SysTick_sSystemCoreClock/8; //9000 000 1s //外部时钟8分频SysTick_usSysTick_s/1000 000; //9 1us SysTick_msSysTick_s/1000; //9 000 1msSysTick-LOAD nus*SysTick_ms-1;//2.重装载值9000-1SysTick-CTRL |(0x011); //3.使能中断 SysTick倒数计数到0时产生SysTick异常(中断)请求 */SysTick-VAL0; //4.清空计数器,清标志位NVIC_SetPriority(SysTick_IRQn,NVIC_EncodePriority(7-2,1,2)); // 5.设置中断优先级NVIC_EnableIRQ(SysTick_IRQn); //6.使能NVIC响应SysTick-CTRL |10; //7.使能计数器/* 步骤5、6也可以用结构体来配置优先级以及使能NVIC响应。NVIC_InitTypeDef NVIC_InitStructure; //结构体重命名NVIC_InitStructure.NVIC_IRQChannel SysTick_IRQn; //选择通道要中断的对象NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority 0; //设置抢占优先级NVIC_InitStructure.NVIC_IRQChannelSubPriority 3; //设置响应优先级NVIC_InitStructure.NVIC_IRQChannelCmd ENABLE; //通道使能NVIC_Init(NVIC_InitStructure); //根据以上参数初始化NVIC寄存器 */ } void SysTick_Handler(void) {if((SysTick-CTRL 0x1 16))//检测标志位也是清除标志位{ SysTick-VAL0; //清空计数器,清标志位printf(123456\r\n);} }主函数 int main() {NVIC_SetPriorityGrouping(7-2); //设置优先级分组。抢占2bit响应2bit。SysTick_ms_Init(1); //实现1ms打印一次123456 }六、附录 上述函数中为什么SysTick的时钟频率需要经过8分频系统时钟 答因为在时钟树框图中Cortex系统时钟需要系统时钟经过8分频。
http://www.zqtcl.cn/news/523403/

相关文章:

  • 笔记本可以做网站吗怎样查看网站是否备案
  • 千灯做网站网站静态和伪静态意思
  • 做境外碎片化旅游的网站wordpress wdcp
  • 整容医院网络建设公司seo实战技术培训
  • 免费服务器建立网站郑州seo线上推广系统
  • 医院网站建设的目的qq小程序源码
  • 郑州seo网站排名优化公司建站行业发展
  • 彭山住房和城乡建设局网站儒枫网网站建设
  • wap asp网站模板下载中企动力骗子公司
  • 中文电商网站模板洛阳网络公司排名
  • 国外毕业设计网站青岛seo服务
  • 自己做的网站怎么发布视频教程廊坊网站排名优化公司哪家好
  • 域名服务器都有了怎么做网站网站开发获取用户微信号登录
  • 淮南建设公司网站企业系统工程
  • 仓山福州网站建设佛山网站制作专业公司
  • 男男做的视频网站扬中网站建设案例
  • 做钓鱼网站用哪种编程语言代理网站备案
  • 广汉有没有做网站建设公司wordpress 301插件
  • 龙岗菠菜网站建设chatgpt网页
  • 如何查看网站ftp地址四川公共资源交易网招标网
  • 家居企业网站建设机构沈阳工程信息
  • 上海好的网站设计公司wordpress 上传文件路径
  • 用微信微博网站来做睡眠经济亚马逊跨境电商开店流程及费用
  • 网络公司做的网站根目录在哪网站建设必备条件
  • 网站建设外包服务管理情况公众号 链接wordpress
  • 深圳网站建设黄浦网络 技术差做网站的怎么跑业务
  • 青岛崂山区网站建设广东企业网站建设多少钱
  • 男女做那个的小视频网站韩国儿童才艺网站建设模板
  • 餐饮品牌网站建设淮北论坛最新招聘
  • 给客户做网站网站自动适应屏幕