首页 > 其他分享 >2.系统定时器

2.系统定时器

时间:2024-08-22 23:04:53浏览次数:10  
标签:sys 定时器 && temp 系统 us delay 延时

系统定时器SYSTEM文件夹介绍
1,sys文件夹介绍
sys_nvic_set_vector_table():设置中断向量表地址
sys_intx_enable():开启所有中断
sys_intx_disable():关闭所有中断(但是不包括fault和NMI中断)
sys_wfi_set():执行: WFI指令(执行完该指令进入低功耗状态)
sys_standby():进入待机模式
sys_soft_reset():系统软复位
sys_msr_msp():设置栈顶地址
sys_stm32_clock_init():设置系统时钟
sys_cache_enable():使能I-Cache和D-Cache, 开启D-Cache强制透写


2,deley文件夹介绍
delay_init():初始化系统滴答定时器

void delay_init(uint16_t sysclk) 
{ 
	SysTick->CTRL = 0; 
	HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK_DIV8); //配置CLKSOURCE寄存器置0,8分频
    //计数频率=系统时钟(72M)/8(分频)=9M
	g_fac_us = sysclk / 8; //全局变量,赋值=参数uint16_t sysclk/8,标志这1us的次数
    
}


delay_us():用系统滴答定时器实现微秒延时

void delay_us(uint32_t nus) 
{ 
	uint32_t temp; //定义变量temp
	SysTick->LOAD = nus * g_fac_us; 	/* 时间加载,重装载值一般要-1 */ 
	SysTick->VAL = 0x00; 			/* 清0计数器 */ 
	SysTick->CTRL |= 1 << 0 ; 		/* 开始倒数 */ 
	do 
	{ 
		temp = SysTick->CTRL; 
	} while ((temp & 0x01) && !(temp & (1 << 16))); /* (temp &(1<<16))非0则跳出循环 */

 
	SysTick->CTRL &= ~(1 << 0) ; 		/* 关闭SYSTICK */ 
	SysTick->VAL = 0X00; 			/* 清空计数器 */ 
}

时间 = 计数个数 / 计数频率
while循环条件判断是为0跳出循环
&&操作符:A && B: 如果A和B都是1,则 A&&B整体表达式为真,如果A && B中只要有一个为0,则整体为0.
!取反
A && !B则A固定不变B要为1
temp&0x01只要temp的最低位是1(真),那么结果就是1,反之就是0(假)。
(temp &(1<<16))非0则跳出循环

delay_ms():用微秒延时函数实现毫秒延时

void delay_ms(uint16_t nms) 
{ 
    /* 这里用1000,是考虑到可能有超频应用, 
	 * 比如128Mhz的时候, delay_us最大只能延时1/(128 000 000/8)*2^24=1.048576s
	*/ 
	uint32_t repeat = nms / 1000;	  //大于1s的整数部分
	uint32_t remain = nms % 1000;     //大于1s的小数部分
	while (repeat) 
	{ 
		delay_us(1000 * 1000); 	/* 利用delay_us 实现 1000ms 延时 */ 
		repeat--; 
	} 
	if (remain) 
	{ 
		delay_us(remain * 1000); 	/* 利用delay_us, 把尾数延时(remain ms)给做了 */ 
	} 
}

SysTick,即系统滴答定时器,包含在M3/4/7内核里面,核心是一个24位的递减计数器


测试:魔术棒->Utilities->Settings->Trace->Core Clock:输入系统时钟->仿真->打断点运行延时->看t1变化->->

 

3.usart文件夹介绍
printf函数输出流程:printf()->C标准库->fputc()->->
用户需要根据fputc最终输出的硬件重新定义该函数,此过程称为:printf重定向

printf函数支持:
1,避免使用半主机模式,两种方法:微库法、代码法
半主机模式:就是通过仿真器实现开发板在电脑上的输入和输出
微库法:魔术棒->Target->勾选:Use Micro LIB
2,实现fputc函数



标签:sys,定时器,&&,temp,系统,us,delay,延时
From: https://www.cnblogs.com/aQxiong/p/18374920

相关文章

  • 基于 Python 3.12.4 和 PySide 6 的 假用户操作系统【0-0】虚拟终端框架
    基本目标实现工作目录的切换;实现非退出命令下的无限循环;到目前为止还不能实现的功能动态导入py文件中的模块缺少组件定义虚拟进程类command.pyfromctypesimportwindllfromPySide6.QtWidgetsimportQWidgetfromsysimportexitassys_exitfromosimportpath......
  • Javaweb+jsp外卖点餐系统+源码(三)
    第三章详细设计3.1 用户的主界面用户的主菜单界面。页面如图3-1所示:图3-1 用户的主界面3.2用户注册页面用户在首次登录外卖订餐系统管理页面时,需要在注册页面需要完成个人信息的注册。页面如图3-2所示:图3-2外卖订餐系统的注册页面3.3用户登录界面用户通......
  • HTC 10 刷系统 LineageOS 19.1 Android 12
    解锁手机解锁会导致数据全部清除,注意保存Bootloader解锁,S-ON可以不用解锁(好像可以绕过解锁安装twrp,暂时没尝试)HTC官方UnlockBootloaderHTCDesire20pro可以不通过官方网站解锁adbrebootbootloader#进入bootloadersudofastbootflashingunlock#选择UNLOC......
  • 麒麟操作系统解压zip格式压缩文件(以Ubuntu系统示范)
    麒麟操作系统解压zip格式压缩文件(以Ubuntu系统示范)最近,某某反映单位配的菊花牌电脑,用的麒麟系统,解压不了zip格式文件,为此,我回家用ubuntu系统示范以下,尽可能详细!国产Linux对新人不够友好阿!首先查看zip文件所在目录,如下图,我的文件在目录/home/yang/下载/测试中打开终端Ct......
  • 看了几十篇论文,实现了个专业算法,用threejs做了个三维人员定位系统示例(已开源)
    需求“threejs中能不能给定几组三维坐标(或者CAD绘制的三维多段线),给一个断面形状,直接生成三维管道?”例如原始CAD图如下:要求用threejs获取线的三维坐标数据自动生成的三维管道效果图如下: 分析如果直接对每条线用threejs中的THREE.TubeGeometry去绘制的话,会出现交岔口出......
  • 系统编程-lvgl
    带界面的MP3播放器--lvgl目录带界面的MP3播放器--lvgl一、什么是lvgl?二、简单使用lvgl在工程中编写代码实现带界面的mp3播放器main.cevents_init.cevents_init.h补充1:glob函数补充2:atexit函数一、什么是lvgl?--LVGL是一个开源的嵌入式图形库,用于创建图形界......
  • 基于nodejs+vue血库管理系统[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码毕设程序文件开题报告内容研究背景在医疗体系中,血液作为拯救生命的重要资源,其管理与调配的高效性直接关系到患者救治的成功率与生命安全。随着医疗技术的不断进步和临床需求的日益增长,传统的人工......
  • 操作系统-线程
    一、线程介绍线程是操作系统能内够进行运算、执行的最小单位,它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。​ 总结:线程是进程的一部分,是进程内负责执行的单位,进程是由资源单位(......
  • 基于Springboot+vue的学生网上请假系统
    文章底部获取项目源码联系方式【万字文档+源码】基于Springboot+vue的学生网上请假系统-可用于毕设-课程设计-练手学习1系统概述1.1研究背景随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管......
  • 【精选】基于Python的热门旅游景点数据分析系统的设计与实现(南京旅游,北京旅游,旅游网站
    目录: 系统简介:  关键技术介绍2.1PYTHON语言简介2.2MySql数据库2.3DJANGO框架2.4Hadoop介绍2.5Scrapy介绍2.6B/S架构 系统总功能结构设计系统详细实现:6系统测试系统测试的目的软件测试过程测试用例为什么选择我: 博主介绍:  ✌我是阿龙,一名......