2.系统定时器

news/2024/9/19 16:53:51/文章来源:https://www.cnblogs.com/aQxiong/p/18374920

系统定时器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(分频)=9Mg_fac_us = sysclk / 8; //全局变量,赋值=参数uint16_t sysclk/8,标志这1us的次数}


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

void delay_us(uint32_t nus) 
{ uint32_t temp; //定义变量tempSysTick->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函数



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/785641.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Terraform - 初解Terraform - 安装

开发环境配置 Note:安装环境为windows系统64位笔记本电脑 1.安装适用于 Windows 的 Terraform: https://developer.hashicorp.com/terraform/install 2.下载 Terraform: https://releases.hashicorp.com/terraform/1.9.4/terraform_1.9.4_windows_amd64.zip 3.从下载中,将…

python 05-标准库:csv、json、sqlite3、datetime模块

csv模块import csv# data.csv不存在时,会现在当前目录下创建一个data.csv文件 with open("data.csv", "w", encoding=utf-8) as file:writer = csv.writer(file)writer.writerow(["trasanction_id", "product_id", "price_id&qu…

初识方法

1.方法是什么 1.java方法是语句的合集,放在一起执行一个功能。 2.方法包含于类或对象中 3.方法在程序中被创建,在其他地方被引用 2.方法的原则:原子性 一个方法只能完成一个功能 3.在main方法外计算 1.先在main外面书写一个加法方法2.再在main里面直接输出加法方法总览:

Terraform - 初解Terraform - 简介

前言 云计算 主要提供计算服务,例如服务器、存储、数据库、网络等等; 对于云服务,通常只需使用多少支付多少,从而帮助降低运营成本,使基础设施更有效地运行,并能根据业务需求的变化调整对服务的使用。公有云: 多租户面向个人或企业由第三方云服务商托管和运营。 私有云: …

045、Vue3+TypeScript基础,pinia库中使用$subscribe订阅数据变动

01、main.js代码如下:// 引入createApp用于创建Vue实例 import {createApp} from vue // 引入App.vue根组件 import App from ./App.vue//第一步:引入pinia import {createPinia} from piniaconst app = createApp(App);//第二步:创建pinia实例 const pinia = createPinia()…

爬虫案例1-爬取图片的三种方式之一:DrissionPage篇(3)

继requests篇和selenium篇,本文是爬取图片的最后一个案例,利用了python第三方库DrissionPage来自动化爬取图片。当然,爬取图片肯定不止这三种方法,还有基于python的scrapy框架,基于node.js的express框架以及基于Java的webmagic框架等等。 DrissionPage和selenium相似,都是…

HtmlUnit:自动化操作web页面的java工具

java有httpclient等工具,可以模拟进行一些web操作,但一些逻辑是在前端js中执行的,此时httpclient就比较困难了。 此时可以考虑使用HtmlUnit,模拟出一个浏览器,全程在浏览器中操作。本文以 在百度中输入搜索关键字->点击“百度一下” 按钮->打印搜索结果 这一过程为例…

nginx代理服务

Nginx****代理服务代理区别 区别在于代理的对象不⼀样 正向代理代理的对象是客户端 反向代理代理的对象是服务端 2.Nginx****负载均衡2.2Nginx****负载均衡状态配置 backup max_conns 测试 backup 以及 down 状态 当⼀个后端服务器被标记为 backup 时,它将仅作为备⽤服务器使⽤…

声音克隆GPT-SoVITS 2.0软件和详细的使用教程!

天命人,请允许我先蹭个热点! 原始声音: 播放 克隆声音: 播放 文章写了一半,被《黑神话悟空》刷屏了。突发奇想,用里面的声音来做个素材试试看。B站捞了一点声音素材,随便剪一剪,训练一把过,没有调优,就直接拿来用了。情绪还差点意思,音色克隆的还不错。 下面进入正…

手机轰炸机 短信轰炸 可匣 二90二1243交流

使用 fiddler 抓包 获取到了 100+个 发送短信验证的接口 使用自己手机试了一下 速度非常快。因为是同时迸发,所以导致手机短信量一瞬间到了100+ 但是会导致一个问题,就是无感知情况 于是调整接口请求方式,设置异步请求,间隔3s钟,这次以后会达到一个比较好的效果 没办法上传…

元宇宙虚拟展厅_元宇宙线上展馆制作成本有哪些?

在元宇宙中制作虚拟展厅的成本可能因多种因素而有很大差异,包括复杂程度、定制、大小、平台以及所提供的支持和服务水平,企业在决定是否在元宇宙中制作虚拟展厅时应仔细考虑自身需求和预算,并应寻找经验丰富的开发公司和具有成功合作的平台,以确保获得最佳结果.目前,3DCAT已…

利用两个IO口检测6个按键

利用两个IO口检测6个按键用两个IO口扫描6个按键,原理图与扫描程序。 先贴上原理图:以下为思路: 将两个IO口配置为上拉输出(STM32中)或者初始化输出高电平、 1、首先:IO1,IO2输出高电平。 S1按下,电流方向由R1流向GND,此时IO1为低电平。S2按下,电流方向由R2流向GND,此…