【【萌新的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.mzph.cn/news/41371.shtml

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

相关文章

基于IMX6ULLmini的linux裸机开发系列二:使用C语言和SDK点亮LED

引入sdk头文件 sudo chown -R gec /opt 用这条命令给gec赋权限&#xff0c;否则访问权限不够&#xff0c;无法读取&#xff0c;如下图成功 目的&#xff1a;解决寄存器地址难查难设置 devices/MCIMX6Y2/MCIMX6Y2.h 记录外设寄存器及其相关操作 devices/MCIMX6Y2/drivers/fsl_…

Windows+VMware+Ubuntu+Anaconda+VMware Tools

Q1&#xff1a;Windows不支持***agent模拟器 A1&#xff1a;在VMware安装Ubuntu虚拟机 P1: 下载 VMware-workstation-full-15.5.6-16341506.exe 安装包&#xff08;峰哥电脑软件&#xff09; P2: 下载Ubuntu镜像 地址 ubuntu-18.04.6-desktop-amd64.iso P3&#xff1a;搭载镜…

干翻Dubbo系列第十一篇:Dubbo常见协议与通信效率对比

文章目录 文章说明 一&#xff1a;协议 1&#xff1a;什么是协议 2&#xff1a;协议和序列化关系 3&#xff1a;协议组成 &#xff08;一&#xff09;&#xff1a;头信息 &#xff08;二&#xff09;&#xff1a;体信息 4&#xff1a;Dubbo3中常见的协议 5&#xff1a;…

华为在ospf area 0单区域的情况下结合pbr对数据包的来回路径进行控制

配置思路&#xff1a; 两边去的包在R1上用mqc进行下一跳重定向 两边回程包在R4上用mqc进行下一跳重定向 最终让内网 192.168.10.0出去的数据包来回全走上面R-1-2-4 192.168.20.0出去的数据包来回全走 下面R1-3-4 R2和R3就是简单ospf配置和宣告&#xff0c;其它没有配置&#…

搭建grafana+loki+promtail日志收集系统

准备工作 下载地址 https://github.com/grafana/loki/releases 安装包放在服务器目录&#xff1a;/opt wget https://github.com/grafana/loki/releases/download/v2.4.2/loki-linux-amd64.zip wget https://github.com/grafana/loki/releases/download/v2.4.2/promtail-lin…

【备战csp-j】csp常考题目详解(3)

三.排列组合 1. 7名学生站成一排&#xff0c;甲、乙必须站在一起有多少不同排法&#xff1f; 答案&#xff1a;1440 解析&#xff1a; 6组人进行全排列&#xff1a;A&#xff08;6,6&#xff09;&#xff1b; 甲和乙的顺序有两种情况&#xff0c;所以结果要再乘2&#xff1b; …

影响力再度提升,Smartbi多次蝉联Gartner、IDC等权威认可

近期&#xff0c;思迈特软件捷报频传&#xff0c;Smartbi凭借技术创新实力和产品能力&#xff0c;成功入选Gartner中国增强数据分析代表厂商及自助分析代表厂商&#xff0c;同时&#xff0c;连续三年蝉联“IDC中国FinTech 50”榜单。 Part.1 再次被Gartner提名 Smartbi深度融…

重塑DTC规则:元气森林的全渠道转型

元气森林作为迄今为止用5-6年时间最快达到70亿年销售额的饮料品牌&#xff08;统一、可口可乐、东鹏特饮都花了15年左右&#xff0c;康师傅花了10年&#xff09;。元气森林于2016年在北京创立&#xff0c;凭借健康产品理念和新潮营销方式&#xff0c;一款主打“0糖0卡0脂”概念…

激活函数总结(十一):激活函数补充(Absolute、Bipolar、Bipolar Sigmoid)

激活函数总结&#xff08;十一&#xff09;&#xff1a;激活函数补充 1 引言2 激活函数2.1 Absolute激活函数2.2 Bipolar激活函数2.3 Bipolar Sigmoid激活函数 3. 总结 1 引言 在前面的文章中已经介绍了介绍了一系列激活函数 (Sigmoid、Tanh、ReLU、Leaky ReLU、PReLU、Swish、…

C++ auto关键字

文章目录 一、auto的推导规则二、auto的限制 C11 中有&#xff1a;auto 类型推导 auto x 5; // OK: x 是 int 类型 auto pi new auto(1); // OK: pi 被推导为 int* const auto *v &x, u 6; // OK: v是const int*类型&#xff0c;u是const int类型 static auto y 0.0;…

【Java】批量生成条形码-itextpdf

批量生成条形码 Controller ApiOperation("商品一览批量生成商品条形码")PostMapping("/batchGenerateProdBarCode")public void batchGenerateProdBarCode(RequestBody ProductListCondition productListCondition,HttpServletResponse response){import…

使用Spring-Security后,浏览器不能缓存的问题

Spring-Security在默认情况下是不允许客户端进行缓存的&#xff0c;在使用时可以通过禁用Spring-Security中的cacheControl配置项允许缓存。 protected void configure(HttpSecurity http) throws Exception {// 允许缓存配置http.headers().cacheControl().disable(); }

Java中使用流将两个集合根据某个字段进行过滤去重?

Java中使用流将两个集合根据某个字段进行过滤去重? 在Java中&#xff0c;您可以使用流(Stream)来过滤和去重两个集合。下面是一个示例代码&#xff0c;展示如何根据对象的某个字段进行过滤和去重操作&#xff1a; import java.util.ArrayList; import java.util.List; impor…

“代码驭宠而行“:探索Python的魔法世界,开启编程奇幻之旅!

文章目录 &#x1f340;引言&#x1f340;第一步&#xff1a;安装Python和开发环境&#x1f340;第二步&#xff1a;掌握基本语法&#x1f340;第三步&#xff1a;使用Python库和模块&#x1f340;第四步&#xff1a;实践项目和练习&#x1f340;第五步&#xff1a;学习进阶主题…

origin修改默认的字体等

因为默认是中文宋体&#xff0c;每次切换成英文尤其是希腊字母就很麻烦。 选择菜单栏的【设置】——【选项】点击。 弹出窗口中选择【文本字体】 设置成你需要的字体就好。 这里同样可以更改页面、图等的默认设置。 效果&#xff1a; 选择插入文字后&#xff0c;自动更改成…

银河麒麟V10 达梦安装教程

安装前先准备要安装包&#xff0c;包需要需要区分X86和arm架构。 版本为&#xff1a;dm8_20230419_FTarm_kylin10_sp1_64.iso 达梦数据库下载地址&#xff1a; https://www.aliyundrive.com/s/Qm7Es5BQM5U 第一步创建用户 su - root 1. 创建安装用户组 dminstall。 groupad…

前馈神经网络优化器

引用的知乎上的文章内容&#xff0c;现在有些地方还不太明白&#xff0c;留待以后查看。 import math import numpy as np import matplotlib.pyplot as pltRATIO 3 # 椭圆的长宽比 LIMIT 1.2 # 图像的坐标轴范围class PlotComparaison(object):"""多种优化…

Python爬虫的应用场景与技术难点:如何提高数据抓取的效率与准确性

作为专业爬虫程序员&#xff0c;我们在数据抓取过程中常常面临效率低下和准确性不高的问题。但不用担心&#xff01;本文将与大家分享Python爬虫的应用场景与技术难点&#xff0c;并提供一些实际操作价值的解决方案。让我们一起来探索如何提高数据抓取的效率与准确性吧&#xf…

python3实现线性规划求解

Background 对于数学规划问题&#xff0c;有很多的实现。MatlabYALMIPCPLEX这个组合应该是比较主流的&#xff0c;尤其是在电力相关系统中占据着比较重要的地位。MATLAB是一个强大的数值计算工具&#xff0c;用于数学建模、算法开发和数据分析。Yalmip是一个MATLAB工具箱&#…

MongoDB:MySQL,Redis,ES,MongoDB的应用场景

简单明了说明MySQL,ES,MongoDB的各自特点,应用场景,以及MongoDB如何使用的第一章节. 一. SQL与NoSQL SQL被称为结构化查询语言.是传统意义上的数据库,数据之间存在很明确的关联关系,例如主外键关联,这种结构可以确保数据的完整性(数据没有缺失并且正确).但是正因为这种严密的结…