【【萌新的STM32学习-9】】

萌新的STM32学习-9

我们在使用某个外设,必须线使能该外设时钟
SYSTEM 文件夹里面的代码由正点原子提供,是 STM32F1xx 系列的底层核心驱动函数,
可以用在 STM32F1xx 系列的各个型号上面,方便大家快速构建自己的工程。本章,我们将向大
家介绍这些代码的由来及其功能,也希望大家可以灵活使用 SYSTEM 文件夹提供的函数,来快
速构建工程,并实际应用到自己的项目中去。
SYSTEM 文件夹下包含了 delay、sys、usart 等三个文件夹。分别包含了 delay.c、sys.c、usart.c
及其头文件。这 3 个 c 文件提供了系统时钟设置、延时和串口 1 调试功能,任何一款 STM32F1
都具备这几个基本外设,所以可以快速地将这些设置应用到任意一款 STM32F1 产品上,通过
这些驱动文件实现快速移植和辅助开发的效果。

12.1 deley 文件夹代码介绍
12.2 sys 文件夹代码介绍
12.3 usart 文件夹代码介绍
delay 文件夹内包含了 delay.c 和 delay.h 两个文件,这两个文件用来实现系统的延时功能,
其中包含 7 个函数:
void delay_osschedlock(void);
void delay_osschedunlock(void);
void delay_ostimedly(uint32_t ticks);
void SysTick_Handler(void);
void delay_init(uint16_t sysclk);
void delay_us(uint32_t nus);
void delay_ms(uint16_t nms);
前面 4 个函数,仅在支持操作系统(OS)的时候,需要用到,而后面 3 个函数,则不论是
否支持 OS 都需要用到。
void delay_init(uint16_t sysclk);
初始化系统滴答定时器

void delay_us(uint32_t nus);
用系统滴答定时器实现微妙延时

void delay_ms(uint16_t nms);
用微妙延时函数实现毫秒延时
CM3 内核处理器,内部包
含了一个 SysTick 定时器,SysTick 是一个 24 位的向下递减的计数定时器,当计数值减到 0 时,
将从 RELOAD 寄存器中自动重装载定时初值,开始新一轮计数。只要不把它在 SysTick 控制及
状态寄存器中的使能位清除,就永不停息
在这里插入图片描述
CLKSOURCE 可以通过 0 1 来选择是几分频 比如说 0 就是选择8分频 1就是选择 1分频
在这里插入图片描述
在这里插入图片描述
/**

  • @brief 初始化延迟函数
  • @param sysclk: 系统时钟频率, 即 CPU 频率(HCLK)
  • @retval 无
    /
    void delay_init(uint16_t sysclk)
    {
    #if SYS_SUPPORT_OS /
    如果需要支持 OS. /
    uint32_t reload;
    #endif
    SysTick->CTRL = 0; /清 Systick 状态,以便下一步重设,如果这里开了中断会关闭其中断/
    /
    SYSTICK 使用内核时钟源 8 分频,因 systick 的计数器最大值只有 2^24 /
    HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK_DIV8);
    g_fac_us = sysclk / 8; /
    不论是否使用 OS,g_fac_us 都需要使用,作为 1us 的基础时基 /
    #if SYS_SUPPORT_OS /
    如果需要支持 OS. /
    reload = sysclk / 8; /
    每秒钟的计数次数 单位为 M /
    reload = 1000000/delay_ostickspersec;/ 根据 delay_ostickspersec 设定溢出时间
    /
    g_fac_ms = 1000 / delay_ostickspersec;/* 代表 OS 可以延时的最少单位 /
    SysTick->CTRL |= 1 << 1; /
    开启 SYSTICK 中断 /
    SysTick->LOAD = reload; /
    每 1/delay_ostickspersec 秒中断一次 /
    SysTick->CTRL |= 1 << 0; /
    开启 SYSTICK */
    #endif
    }

下面对这句话进行简单的理解和分析
g_fac_us = sysclk / 8; /* 不论是否使用 OS,g_fac_us 都需要使用,作为 1us 的基础时基 */
假设滴答计数器的计数频率是1M 1000000 那么每数一次 就是1/1000000 对于我们F1 系列来说就是72MHz 8分频 滴答计数器真正的计数频率是9M 而我们1M 得到1微妙是1/1000000 而在9M的情况下 就需要9/9000000 那么这个9哪里来 本来都是?/9000000 那么想要得到? 就需要我们把这个数据截取出来用 72/8=9 得到
在这里插入图片描述
500ms延时正确

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

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

相关文章

什么是网络地址转换 (NAT)

网络地址转换&#xff08;NAT&#xff09;是更改源和目标 IP 地址和端口的过程&#xff0c;地址转换减少了对 IPv4 公共地址的需求&#xff0c;并隐藏了专用网络地址范围&#xff0c;该过程通常由路由器或防火墙完成。 NAT是如何工作的 NAT 允许单个设备&#xff08;如路由器…

Windows - UWP - 为UWP应用创建桌面快捷方式

Windows - UWP - 为UWP应用创建桌面快捷方式 前言 这是一个较为简单的方式&#xff0c;不需要过多的命令行。 How 首先Win R -> shell:AppsFolder -> 回车&#xff0c; 这将显示电脑上的已安装应用&#xff08;Win32 & UWP&#xff09;&#xff1a; 找到想要创建…

nginx反向代理流程

一、nginx反向代理流程 反向代理&#xff1a;使用代理服务器来接受internet上的连接请求&#xff0c;然后将请求转发给内部网络中的上游服务器&#xff0c;并将上游服务器得到的结果返回给请求连接的客户端&#xff0c;代理服务器对外表现就是一个web服务器。Nginx就经常拿来做…

go 中自定义包以及import

目录结构如下 注意ellis这个文件夹是在工作区的src目录下 testpackage.go package testpackageimport ("fmt" )func Test() {fmt.Println("test") }main.go package mainimport ("ellis/testpackage""fmt" )type Name struct {Fir…

Linux与bash(基础内容一)

一、常见的linux命令&#xff1a; 1、文件&#xff1a; &#xff08;1&#xff09;常见的文件命令&#xff1a; &#xff08;2&#xff09;文件属性&#xff1a; &#xff08;3&#xff09;修改文件属性&#xff1a; 查看文件的属性&#xff1a; ls -l 查看文件的属性 ls …

81-基于stm32单片机DHT11温湿度MQ4可燃气体天然气浓度检测系统自动散热加湿排气Proteus仿真+源码...

资料编号&#xff1a;081 一&#xff1a;功能介绍&#xff1a; 1、采用stm32单片机OLED显示屏MQ4可燃气体浓度检测DHT11温湿度电机按键&#xff0c;制作一个温湿度采集、MQ4可燃气体浓度采集&#xff0c;OLED显示相关数据&#xff0c; 2、通过按键设置温度上限、湿度下限、可燃…

Stable Diffusion核心算法DDPM解析

DDPM&#xff1a;Denoising Diffusion Probabilistic Model&#xff0c;去噪扩散概率模型 本文参考&#xff1a;一个视频看懂扩散模型DDPM原理推导|AI绘画底层模型_哔哩哔哩_bilibili 1、大概原理 从右往左为正向加噪过程&#xff0c;从左往右为逆向降噪过程。 在正向过程中不…

Ubuntu发布java版本

1、连接服务器 2、进入目录 cd /usr/safety/app/3、上传jar文件 4、杀掉原java进程 1. 查看当前java进程 2. ps -ef|grep java 3. ycmachine:/usr/safety/app$ ps -ef|grep java root 430007 1 6 01:11 pts/0 00:02:45 /usr/local/java/jdk1.8.0_341/bin/j…

【LeetCode】205. 同构字符串

205. 同构字符串&#xff08;简单&#xff09; 方法&#xff1a;哈希映射 思路 判断两个字符串是不是同构字符串&#xff0c;只需要判断对应的字符是不是存在映射关系&#xff0c;我们可以使用 map 来保存字符间的映射关系。由于 “不同字符不能映射到同一个字符上&#xff0…

Error: EACCES: permission denied, rename ‘/usr/local/lib/node_modules/appium‘

在使用npm uninstall -g appium卸载appium的过程中报错 Error: EACCES: permission denied, rename /usr/local/lib/node_modules/appium -> /usr/local/lib/node_modules/.appium-cfBVovI6 npm ERR! code EACCES npm ERR! syscall rename npm ERR! path /usr/local/lib/n…

智能报警系统:利用人工智能保障安全和及时应对危险

引言&#xff1a;随着人工智能的快速发展&#xff0c;智能报警系统成为了一种高效、及时应对危险和保障安全的重要工具。通过分析监控视频中的图像、声音以及其他传感器数据&#xff0c;人工智能可以自动检测和识别火灾、破坏、烟雾、异常温度等情况&#xff0c;并及时触发报警…

Python学习笔记_基础篇(十一)_socket编程

python 线程与进程简介 进程与线程的历史 我们都知道计算机是由硬件和软件组成的。硬件中的CPU是计算机的核心&#xff0c;它承担计算机的所有任务。 操作系统是运行在硬件之上的软件&#xff0c;是计算机的管理者&#xff0c;它负责资源的管理和分配、任务的调度。 程序是运行…

虚拟拍摄,如何用stable diffusion制作自己的形象照?

最近收到了某活动的嘉宾邀请&#xff0c;我将分享&#xff1a; 主题&#xff1a;生成式人工智能的创新实践 简要描述&#xff1a;从品牌营销、智能体、数字内容创作、下一代社区范式等方面&#xff0c;分享LLM与图像等生成式模型的落地应用与实践经验。 领域/研究方向&#xff…

Zookeeper进阶篇 - Paxos协议算法、ZBA协议算法原理、Leader选举原理

Zookeeper底层原理篇&#xff0c;​让学习绚丽多彩起来&#xff01;&#xff01;&#xff01;

Go语言GIN框架安装与入门

Go语言GIN框架安装与入门 文章目录 Go语言GIN框架安装与入门1. 创建配置环境2. 配置环境3. 下载最新版本Gin4. 编写第一个接口5. 静态页面和资源文件加载6. 各种传参方式6.1 URL传参6.2 路由形式传参6.3 前端给后端传递JSON格式6.4 表单形式传参 7. 路由和路由组8. 项目代码mai…

爬虫逆向实战(五)--猿人学第三题

一、数据接口分析 主页地址&#xff1a;猿人学第三题 1、抓包 通过抓包可以发现数据接口是api/match/3 2、判断是否有加密参数 请求参数是否加密&#xff1f; 无请求头是否加密&#xff1f; 无响应是否加密&#xff1f; 无cookie是否加密&#xff1f; 无 二、发送请求 …

AE-卡通人物解说动画视频的制作

目录 1.导入卡通人物图片和音频文件 2.新建合成 3.在卡通人物图片上添加效果和表达式 4.在音频文件上添加效果和表达式 5.将卡通人物中的 CC Split2 中分割1 表达式链接到滑块中 6.卡通人物根据音频文件自动匹配口型。 AE制作卡通人物解说视频&#xff0c;卡通人物口型根据…

Android-网络访问技术Retrofit浅析

Retrofit是一种基于注解的网络请求库&#xff0c;专门用于在Android应用中进行网络访问。它使用简洁的方式定义了网络请求的接口&#xff0c;并自动将请求结果解析为Java对象。Retrofit的核心原理是利用了Java的动态代理技术&#xff0c;将网络请求接口的注解信息转化为具体的网…

Datawhale Django入门组队学习Task01

Task01 一.创建虚拟环境 python -m venv django_learn &#xff08;django_learn那里是自己定的环境名字&#xff09; 之前一直用conda管理虚拟环境&#xff0c;没咋用过virtualenv&#xff0c;然后我的powershell之前也设置了默认启动了base环境&#xff0c;然后输入activat…

网络通信原理TCP字段解析(第四十七课)

字段含义Source Port(源端口号)源端口,标识哪