STM32-05-STM32_SYSTEM文件夹

文章目录

  • STM32 SYSTEM文件夹介绍
    • 1. delay文件夹
    • 2. sys文件夹

STM32 SYSTEM文件夹介绍

1. delay文件夹

  • delay文件夹中的文件delay.cdelay.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);
    

    delay编程思想:CM3内核处理器,内部包含一个SysTick定时器,SysTick是一个24位的向下递减的计数定时器,当计数值减到0时,将从RELOAD寄存器中自动重装载定时初值,开始新一轮计数。只要不把它在SysTick控制及状态寄存器中的使能位清除,就不会停止。我们利用STM32的内部SysTick来实现延时的,这样即不占用中断,也不占用系统定时器。

  • 使用的寄存器

    • SysTick->CTRL寄存器

    在这里插入图片描述

    • SysTick->LOAD寄存器

    在这里插入图片描述

    • SysTick->VAL寄存器

    在这里插入图片描述

  • delay_us函数

    void delay_us(uint32_t nus)
    {
         uint32_t temp;
         SysTick->LOAD = nus * g_fac_us; //向LOAD寄存器的RELOAD位装载初始值
         SysTick->VAL = 0x00; //清空VAL寄存器的CURRENT位,使计数器从0开始
         SysTick->CTRL |= 1 << 0 ; //使能CTRL寄存器的ENABLE位,开始计数
         do
         {
         	temp = SysTick->CTRL;   //获取CTRL寄存器的各个位的状态
         } 
         while ((temp & 0x01) &&!(temp & (1 << 16))); //判断使能位是否为1且通过COUNTFLAG判断是否数到0
         SysTick->CTRL &= ~(1 << 0) ; /* 关闭 SYSTICK */
         SysTick->VAL = 0X00; /* 清空计数器 */
    }
    
  • delay_ms函数

    void delay_ms(uint16_t nms)
    {
        /*这里用 1000,是考虑到可能有超频应用,如 128Mhz 时,delay_us 最大只能延时 1048576us 左右*/
         uint32_t repeat = nms / 1000;
         uint32_t remain = nms % 1000;
         while (repeat)
         {
             delay_us(1000 * 1000); /* 利用 delay_us 实现 1000ms 延时 */
             repeat--;
         }
         if (remain)
         {
             delay_us(remain * 1000); /* 利用 delay_us, 把尾数延时(remain ms)给做了 */
         }
    }
    

    函数接受一个参数 nms,表示需要延时的毫秒数。函数内部首先将毫秒数分解为整秒数剩余的毫秒数。接着使用一个循环,每次循环调用 delay_us 函数来实现 1000 毫秒(1秒)的延时,直到整秒数全部延时完成。最后,如果有剩余的毫秒数,再调用 delay_us 函数来延时剩余的时间。 这样处理使delay_us函数调用次数减少,计数会更加精准。

2. sys文件夹

  • sys文件夹包含sys.c和sys.h两个文件,在sys.c包含以下函数:

    //函数声明
    void sys_nvic_set_vector_table(uint32_t baseaddr, uint32_t offset); //设置中断向量表偏移地址
    void sys_standby(void); //进入待机模式
    void sys_soft_reset(void); //系统软复位
    uint8_t sys_stm32_clock_init(uint32_t plln);  //系统时钟初始化函数
    
    

声明:资料来源(战舰STM32F103ZET6开发板资源包)

  1. Cortex-M3权威指南(中文).pdf
  2. STM32F10xxx参考手册_V10(中文版).pdf
  3. STM32F103 战舰开发指南V1.3.pdf
  4. STM32F103ZET6(中文版).pdf
  5. 战舰V4 硬件参考手册_V1.0.pdf

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年Google Ads新手指南——广告运作与类型、工具

谷歌广告投放是出海企业的必备运营动作&#xff0c;但你需要先了解他的运作逻辑、广告类型、投放必备的工具类型&#xff0c;之后可以为你的投放的高速转化做好万全准备&#xff0c;毕竟每一分钱都要花在刀刃上&#xff01;废话不多说&#xff0c;下面开始为新手准备了基础指南…

【数据库】MySQL锁

一、锁的基本概念 1、锁的定义 锁是协调多个进程或线程并发访问数据库资源的一种机制。 MySQL中的锁是在服务器层或者存储引擎层实现的&#xff0c;保证了数据访问的一致性与有效性。但加锁是消耗资源的&#xff0c;锁的各种操作&#xff0c;包括获得锁、检测锁是否已解除、…

dubbo的springboot集成

1.什么是dubbo&#xff1f; Apache Dubbo 是一款 RPC 服务开发框架&#xff0c;用于解决微服务架构下的服务治理与通信问题&#xff0c;官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力&#xff0c; 利用 Dubbo …

开始卷TED:第1篇 —— 《Embrace the near win》—— part: 3

She first hit a seven, I remember, and then a nine, and then two tens, and then the next arrow didn’t even hit the target. 她第一次射中了7环&#xff0c; 我记得接下来是个9环&#xff0c;然后是2个十环&#xff0c;接下来的那支箭甚至没有射到靶上。 And I saw tha…

Container ansible disguises local ansible 【容器 ansible 伪装本地 ansible】

预备条件&#xff1a; ctr & crictl $ nerdctl & containerd install了解 kubespray 是什么 kubespray 包含 ansible、ansible-playbook命令以及通过kubespray项目安装kubernetes集群的介质。 nerdctl pull quay.io/kubespray/kubespray:v2.23.1 nerdctl save -o qu…

科学和统计分析软件GraphPad Prism mac介绍说明

GraphPad Prism for Mac是一款科学和统计分析软件&#xff0c;旨在帮助研究者、科学家和学生更轻松地处理和可视化数据。 GraphPad Prism for Mac是一款功能强大、易于使用的科学和统计分析软件&#xff0c;适用于各种类型的数据处理和可视化需求。无论您是进行基础研究、临床试…

知识图谱gds使用记录

安装 从下载站下载对应的包到plugin目录下&#xff0c;修改配置文件/etc/neo4j/neo4j.conf&#xff0c;末尾加入gds.*&#xff0c;重新启动 在浏览器输入CALL gds.list()命令进行测试 建立图映射 为了使用图算法&#xff0c;需要先将图数据库的内容映射为一个新图 如果是全…

不定期更新免费签|在线安装全能签轻松签万能签GBOX魔力签喵喵签|赶快白嫖

使用Safari浏览器打开 1.打开平台ios.hccld.com点击应用后的“获取”获取设备UDID&#xff0c;获取后在我的里上就会显示设备UDID信息。 2.点我的-购买证书&#xff0c;选择需要购买的证书进行购买。 3.点击“兑换证书”&#xff0c;输入购买的兑换码。 4.选择你要安装的签名安…

特征工程(二)

特征工程&#xff08;二&#xff09; 特征理解 理解手上的数据&#xff0c;就可以更好的明确下一步的方向。从繁杂的切入点中&#xff0c;主要着眼于一下几个方面&#xff1a; 结构化数据与非结构化数据&#xff1b;数据的4个等级&#xff1b;识别数据中存在的缺失值&#xf…

freesurfer-reconall后批量提取TIV(颅内总体积)

#提取TIV #singleline=$(grep Estimated Total Intracranial Volume /usr/local/freesurfer/subjects/bect-3d+bold-wangjingchen-4.9y-2/stats/aseg.sta

CPT203-Software Engineering 笔记

Week 1 -- Introduction failure reason professional software development*** maintain, security, efficiency, acceptability two kinds***: generic, customized software deterioration 软件退化 reduce changes/ side effects after changes software engineering …

查看SOLIDWORKS 2024的最佳价格和特惠优惠

尊敬的客户&#xff0c; 在 SOLIDWORKS 2024 引领设计技术的未来之际&#xff0c;我们为您提供了更划算的价格和特惠优惠&#xff0c;助您在设计领域更进一步。本文将为您介绍 SOLIDWORKS 2024 的最佳价格&#xff0c;确保您获得最佳的设计工具和投资回报。 1. SOLIDWORKS202…

Rust 常用集合(下)

目录 1、使用 Hash Map 储存键值对 1.1 新建一个哈希 map 1.2 访问哈希 map 中的值 1.3 哈希 map 和所有权 1.4 更新哈希 map 1.4.1 覆盖一个值 1.4.2 只在键没有对应值时插入键值对 1.4.3 根据旧值更新一个值 1.4.4 移除hash map的某一项 1.4.5 清空hash map 1.5 哈…

面试宝典之微服务框架面试题

S1、集群与分布式有啥区别&#xff1f; &#xff08;1&#xff09;相同点&#xff1a; 分布式和集群都是需要有很多节点服务器通过网络协同工作完成整体的任务目标。 &#xff08;2&#xff09;不同点&#xff1a; 分布式是指将业务系统进行拆分&#xff0c;即分布式的每一个…

双位置继电器DLS-5/2TH 额定电压:110VDC 触点形式:7开3闭 柜内安装

系列型号&#xff1a; DLS-5/1电磁式双位置继电器; DLS-5/2电磁式双位置继电器; DLS-5/3电磁式双位置继电器; DLS-5/2G电磁式双位置继电器; DLS-5/3 220VDC双位置继电器 一、用途 1.1用途 DLS-5双位置继电器(以下简称产品)用于各种保护与自动控制系统中&#xff0c;作为切换…

亚马逊实时 AI 编程助手 CodeWhisperer使用体验

文章目录 1&#xff1a;什么是CodeWhisperer &#xff1f;2&#xff1a;试用3&#xff1a;上手体验 1&#xff1a;什么是CodeWhisperer &#xff1f; 最近ChatGPT展现出强大AI能力给我们带来了深刻的影响&#xff0c;AI现在不是一个概念&#xff0c;基于AI的产品一定在各行各业…

Hex2Bin转换软件、Bootloader 、OTA加密升级 、STM32程序加密、其他MCU同样适用

说明&#xff1a;这个工具可以将 Hex 文件 转换为 Bin 格式文件&#xff0c;软件是按自己开发 STM32 OAT 功能需求开发的一款辅助 上位机软件。 文中的介绍时 bootloader boot 文档在补充完善中... 有兴趣的朋友可留言探讨。 1. 软件功能&#xff1a; 1.生成 bin&#x…

test fuzz-05-模糊测试 kelinci AFL-based fuzzing for Java

拓展阅读 开源 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) 开源 Junit performance rely on junit5 and jdk8.(java 性能测试框架。性能测试。压测。测试报告生成。) test fuzz-01-模糊测试&#xff08;Fuzz Testing&#xff09; test fuzz-…

javacc知识点

javacc的语法描述性文件以.jj结尾&#xff0c;一般情况下采用 1、option{JavaCC的选项} options部分&#xff0c;用于放置 JavaCC 的选项&#xff0c;常见option包括&#xff1a; STATIC&#xff1a;用于决定JavaCC生成的所有成员及方法是否被定义为static(注意&#xff1a;定义…

如何在Android Glide中结合使用CenterCrop和自定义圆角变换(图片部分圆角矩形)

如何在Android Glide中结合使用CenterCrop和自定义圆角变换&#xff08;图片部分圆角矩形&#xff09; 在Android开发中&#xff0c;使用Glide加载图片时&#xff0c;我们经常需要对图片进行特定的处理&#xff0c;比如裁剪和圆角变换&#xff0c;特别是一些设计稿&#xff0c;…