STM32-05-STM32_SYSTEM文件夹

这篇具有很好参考价值的文章主要介绍了STM32-05-STM32_SYSTEM文件夹。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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寄存器

    STM32-05-STM32_SYSTEM文件夹,嵌入式,stm32,嵌入式硬件,单片机

    • SysTick->LOAD寄存器

    STM32-05-STM32_SYSTEM文件夹,嵌入式,stm32,嵌入式硬件,单片机

    • SysTick->VAL寄存器

    STM32-05-STM32_SYSTEM文件夹,嵌入式,stm32,嵌入式硬件,单片机

  • 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开发板资源包)文章来源地址https://www.toymoban.com/news/detail-808895.html

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

到了这里,关于STM32-05-STM32_SYSTEM文件夹的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于windows下的System32与SysWOW64两个文件夹

    今天编译一个简单的图形程序,编译时报错 在提示下想到需要用到windows自带的gdi32full.dll文件 想着我用的mingw64编出的是64位的程序 于是去 C:WindowsSysWOW64 目录下找到 gdi32full.dll 然后编译报  然后在这里卡了很久 各种探索尝试后发现把文件换成 C:WindowsSystem32 文件夹里面的

    2024年02月04日
    浏览(79)
  • 安卓ROM定制 修改必备常识-----初步了解system系统分区文件夹的基本含义 【二】

    安卓修改rom 固件 修改GSI 移植rom 必备常识 lib--**so文件基本解析 一起来了解system目录相应文件的用途吧。(rom版本不同里面的app也会不一样) 给大家说下最简单的方法提取img里面的文件,对于后缀img格式的文件可以使用7zip.选择***.img使用7zip打开压缩包方式,可以用于简单提

    2024年02月07日
    浏览(29)
  • c# 释放所有嵌入资源, 到某个本地文件夹

    .net 8

    2024年01月20日
    浏览(33)
  • 【C#】【System.IO】关于拷贝文件夹以及(Directory和DirectoryInfo、File和FileInfo)的区别

    本次问题是想要拷贝文件夹,但是找了一圈发现只有File有Copy或者FileInfo的CopyTo,并没有Directory的拷贝操作方法。 针对C#中拷贝文件夹的方法就是先生成一个目标文件夹(destinationFolder)再将(soursefolder)中的文件依次拷贝到目标文件夹中,C#并没有提供封装好的方法将文件夹

    2024年02月08日
    浏览(28)
  • 【嵌入式学习笔记】嵌入式基础9——STM32启动过程

    程序段交叉引用关系(Section Cross References):描述各文件之间函数调用关系 删除映像未使用的程序段(Removing Unused input sections from the image):描述工程中未用到被删除的冗余程序段(函数/数据) 映像符号表(Image Symbol Table):描述各符号(程序段/数据)在存储器中的地址、类

    2024年02月15日
    浏览(64)
  • stm32嵌入式实验考核

    STM32 实验考核题目 1. 利用 STM32 小板实现:控制外接 LED 灯每隔 3 秒钟亮暗变换,同 时在 PC 机上显示 MCU 的计时时间,MCU 的初始时间由 PC 机 方设置。 2. 利用 STM32 小板实现:利用导线外接 GPIO 口模拟 2 个按键输入, 根据输入组合的四种情况,分别控制三色灯四种流水灯效果

    2024年02月03日
    浏览(37)
  • win32 API 文件夹操作函数整理

    常用操作文件目录的函数 1. CreateDirectory 创建文件夹 原型: 参数说明: lpPathName 要创建的文件夹名称 lpSecurityAttributes 忽略为NULL 返回: 成功返回非零,失败返回零 实例:   2.RemoveDirectory 删除文件夹 原型: 返回: 成功返回非零,失败返回零   3. PathIsDirectory 判断文件夹是否存在 原

    2024年02月05日
    浏览(31)
  • STM32串口通信详解(嵌入式学习)

    时钟信号在电子领域中是指用于同步和定时电路操作的周期性信号。它在数字系统和通信系统中起着至关重要的作用,用于协调各个组件之间的数据传输和操作。 时钟信号有以下几个重要的方面: 频率:时钟信号的频率是指单位时间内信号周期的数量。它通常以赫兹(Hz)为

    2024年02月09日
    浏览(56)
  • STM32的时钟系统(嵌入式学习)

    时钟是指用于计量和同步时间的装置或系统。时钟是嵌入式系统的脉搏,处理器内核在时钟驱动下完成指令执行,状态变换等动作,外设部件在时钟的驱动下完成各种工作,例如:串口数据的发送、AD转换、定时器计数等。因此时钟对于计算机系统是至关重要的,通常时钟系

    2024年02月16日
    浏览(33)
  • 嵌入式 STM32 通讯协议--MODBUS

    目录 一、自定义通信协议 1、协议介绍 2、网络协议 3、自定义的通信协议  二、MODBUS通信协议 1、概述 2、MODBUS帧结构  协议描述 3、MODBUS数据模型   4、MODBUS事务处理的定义 5、MODBUS功能码  6、功能码定义   7、MODBUS数据链路层 8、MODBUS地址规则  9、MODBUS帧描述 10、MODBUS两种

    2024年02月11日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包