精华内容
下载资源
问答
  • c++ 标准库 文件夹(文件目录)操作

    千次阅读 2017-08-01 13:59:27
    很遗憾C/C++标准库是没有完善的文件系统支持的。而网上很多人说io.h头文件是标准库的很让人无语。然后去查了一下C/C++的标准库,发现根本就没有这个头文件。而这个头文件是windows 的c 运行库中的头文件。至于为什么...

    很遗憾C/C++标准库是没有完善的文件系统支持的。而网上很多人说io.h头文件是标准库的很让人无语。然后去查了一下C/C++的标准库,发现根本就没有这个头文件。而这个头文件是windows 的c 运行库中的头文件。至于为什么其中有的函数不是下划线开头的,是因为这些函数是 POSIX兼容系统 中有的函数,所以可以移植。

    所以如果向使用编写垮台平台的文件夹(文件目录)操作程序。C/C++标准库是不提供的。但是我们可以使用 POSIX兼容系统相关函数,也可以使用Boost 提供的库,或者使用别的第三放库来完成特定平台代码的兼容工作。

    更更新:c++17 终于并入boost的文件系统库了

    展开全文
  • ARM是一个做芯片标准的公司,它负责的是芯片内核的架构设计,而TI,ST这样的公司,他们并不做标准,他们是芯片公司,他们是根据ARM公司提供的芯片内核标准设计自己的芯片。所以,任何一个Cortex-M3芯片,他们的内核...

    一、CMSIS标准

    ARM是一个做芯片标准的公司,它负责的是芯片内核的架构设计,而TI,ST这样的公司,他们并不做标准,他们是芯片公司,他们是根据ARM公司提供的芯片内核标准设计自己的芯片。所以,任何一个Cortex-M3芯片,他们的内核结构都是一样的,不同的是他们的存储器容量,片上外设,IO以及其他模块的区别。所以你会发现,不同公司设计的cortex-M3芯片他们的端口数量,串口数量,控制方法这些都是有区别的,这些资源他们可以根据自己的需求理念来设计。同一家公司设计的多种cortex-M3内核芯片的片上外设也会有很大的区别,比如STM32F103RBT和STM32F103ZET,他们的片上外设就有很大的区别。我们可以通过《cortex-M3权威指南》中的一个图来了解一下:
    在这里插入图片描述

    从上图可以看出,芯片虽然是芯片公司设计,但是内核却要服从ARM公司提出的cortex-M3内核标准了,理所当然,芯片公司每卖出一片芯片,需要向ARM公司交一定的专利费。
    既然大家都使用的是cortex-M3内核,也就是说,本质上大家都是一样的,这样ARM公司为了能让不同的芯片公司生产的cortex-M3芯片能在软件上基本兼容,和芯片生产商共同提出了一套CMSIS标准(Cortex Microcontroller Software Interface Standard),翻译过来是“ARM Cortex 微控制器软件接口标准”。ST官方库就是根据这套标准设计的。这里我们又要引用参考资料里面的图片来看看基于CMSIS应用程序基本结构:
    在这里插入图片描述
    CMSIS分为3个基本功能层
    核内外设访问层:ARM公司提供的访问,定义处理器内部寄存器地址以及功能函数。
    中间件访问层:定义访问中间件的通用API,也是ARM公司提供。
    外设访问层:定义硬件寄存器的地址以及外设的访问函数。
    从图中可以看出,CMSIS层在整个系统中是处于中间层,向下负责与内核和各个外设直接打交道,向上提供实时操作系统用户程序调用的函数接口。如果没有CMSIS标准,那么各个芯片公司就会设计自己喜欢的风格的库函数,而CMSIS标准就是要强制规定,芯片生产公司设计的库函数必须按照CMSIS这套规范来设计。
    其实不用讲的这么复杂,一个简单的例子,我们在使用STM32芯片的时候首先要进行系统初始化,CMSIS规范就规定,系统初始化函数名字必须为SystemInit,所以各个芯片公司写自己的库函数的时候就必须用SystemInit对系统进行初始化。CMSIS还对各个外设驱动文件的文件名字规范化,以及函数名字规范化等等一系列规定。

    二、ST固件库文件夹分析

    在这里插入图片描述在这里插入图片描述

    libraries文件夹下面有CMSIS和STM32F10x_StdPeriph_Driver两个目录,这两个目录包含固件库核心的所有子文件夹和文件。其中CMSIS目录下面是启动文件STM32F10x_StdPeriph_Driver放的是STM32固件库源码文件。源文件目录下面的inc目录存放的是stm32f10x_xxx.h头文件,无需改动。src目录下面放的是stm32f10x_xxx.c格式的固件库源码文件。每一个.c文件和一个相应的.h文件对应。这里的文件也是固件库的核心文件,每个外设对应一组文件。libraries文件夹里面的文件在我们建立工程的时候都会使用到。

    project文件夹下面有两个文件夹。顾名思义,STM32F10x_StdPeriph_Examples文件夹下面存放的ST官方提供的固件实例源码,,在以后的开发过程中,可以参考修改这个官方提供的实例来快速驱动自己的外设,很多开发板的实例都参考了官方提供的例程源码,这些源码对以后的学习非常重要。STM32F10x_StdPeriph_Template文件夹下面存放的是工程模板。

    utilities文件下就是官方评估板的一些对应源码,这个可以忽略不看。

    根目录中还有一个stm32f10x_stdperiph_lib_um.chm文件,直接打开可以知道,这是一个固件库的帮助文档,这个文档非常有用,只可惜是英文的,在开发过程中,这个文档会经常被使用到。

    三、关键文件介绍

    下面我们要着重介绍libraries目录下面几个重要的文件。
    core_cm3.c和core_cm3.h文件位于\Libraries\CMSIS\CM3\CoreSupport目录下面,这个就是CMSIS核心文件,提供进入M3内核接口,这是ARM公司提供,对所有CM3内核的芯片都一样。你永远都不需要修改这个文件,所以这里我们就点到为止。
    和CoreSupport同一级还有一个DeviceSupport文件夹。DeviceSupport\ST\STM32F10xt文件夹下面主要存放一些启动文件以及比较基础的寄存器定义以及中断向量定义的文件。
    在这里插入图片描述

    这个目录下面有三个文件:system_stm32f10x.c, system_stm32f10x.h以及stm32f10x.h文件。其中system_stm32f10x.c和对应的头文件system_stm32f10x.h文件的功能是设置系统以及总线时钟,这个里面有一个非常重要的SystemInit()函数,这个函数在我们系统启动的时候都会调用,用来设置系统的整个时钟系统。
    stm32f10x.h这个文件就相当重要了,只要你做STM32开发,你几乎时刻都要查看这个文件相关的定义。这个文件打开可以看到,里面非常多的结构体以及宏定义。这个文件里面主要是系统寄存器定义声明以及包装内存操作,对于这里是怎样声明以及怎么将内存操作封装起来的,我们在后面的章节“MDK中寄存器地址名称映射分析”中会讲到。
    在DeviceSupport\ST\STM32F10x同一级还有一个startup文件夹,这个文件夹里面放的文件顾名思义是启动文件。在\startup\arm目录下。我们可以看到8个startup开头的.s文件。
    在这里插入图片描述

    这里之所以有8个启动文件,是因为对于不同容量的芯片启动文件不一样。对于103系列,主要是用3个启动文件:
    startup_stm32f10x_ld.s :适用于小容量产品
    startup_stm32f10x_md.s :适用于中等容量产品
    startup_stm32f10x_hd.s :适用于大容量产品
    这里的容量是指flash的大小,判断方法如下:
    小容量:flash≤32k
    中容量:64K≤flash≤128K
    大容量:256K≤flash

    启动文件到底有什么作用,其实我们可以打开启动文件进去看看。启动文件主要是进行堆栈之类的初始化,中断向量表以及中断函数定义。启动文件要引导进入main函数。Reset_Handler中断函数是唯一实现了的中断处理函数,其他的中断函数基本都是死循环(需要用户根据自己的需求去填充)。Reset_Handler在我们系统启动的时候会调用,下面让我们看看Reset_Handler这段代码:
    在这里插入图片描述

    这里面要引导进入main函数,同时在进入main函数之前,首先要调用SystemInit系统初始化函数。后面的那个[WEAK]表示这个函数是个弱定义,可以被用户自己写的函数所覆盖,如果用户重新定义了就按照用户的执行,如果用户没有定义就按照系统默认提供的执行。

    还有其他几个文件stm32f10x_it.c , stm32f10x_it.h以及stm32f10x_conf.h等文件,这里就不一一介绍。stm32f10x_it.c里面是用来编写中断服务函数的,中断服务函数也可以随意编写在工程里面的任意一个文件里面,个人觉得这个文件没太大意义。
    stm32f10x_conf.h文件打开可以看到一堆的#include,这里你建立工程的时候,,可以注释掉一些你不用的外设头文件。

    展开全文
  • STM32标准库移植

    2021-05-09 22:32:34
    STM32标准库移植 ...2.找到下载好的标准库文件夹进行移植 ①.内核文件移植 ②、启动文件移植 ③、使用者文件的移植 第二批: ④、移植标准库 下一期:使用keil5新建STM32工程 ...

    STM32标准库移植

    1.为了养成良好的编程习惯,同时方便分类规整,以及后期开发移植,首先选定一个文件夹 建立以下文件夹。
    在这里插入图片描述
    同时在user下新建文件夹API用于存储以后编程中独立的模块的.h与.c文件方便以后移植程序,以及规整程序。
    在这里插入图片描述

    2.找到下载好的标准库文件夹进行移植

    ①.内核文件移植
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    ②、启动文件移植
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    ③、使用者文件的移植
    在这里插入图片描述
    在这里插入图片描述
    第二批:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    ④、移植标准库
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    下一期:使用keil5新建STM32工程

    展开全文
  • 菜鸟初识STM32固件库文件夹

    千次阅读 2013-09-28 21:19:26
    ARM 是一个做芯片标准的公司,它负责的是芯片内核的架构设计,而 TI,ST 这样的公司,他们并不做标准,他们是芯片公司,他们是根据 ARM 公司提供的芯片内核标准设计自己的芯片。所以,任何一个做 Cortex-M3 芯片,...

    欢迎访问我的博客新地址:点击这里


    ARM、TI、ST等公司在嵌入式学习者眼中的区别

    ARM 是一个做芯片标准的公司,它负责的是芯片内核的架构设计,而 TI,ST 这样的公司,他们并不做标准,他们是芯片公司,他们是根据 ARM 公司提供的芯片内核标准设计自己的芯片。所以,任何一个做 芯片 (例如Cortex-M3),他们的内核结构都是一样的,不同的是他们的存储器容量,片上外设,IO 以及其他模块的区别。所以你会发现,不同公司设计的 芯片(例如Cortex-M3)他们的端口数量,串口数量,控制方法这些都是有区别的,这些资源他们可以根据自己的需求理念来设计。同一家公司设计的多种内核芯片(例如Cortex-M3)的片上外设也会有很大的区别.通过ARM公司的《Cortex-M3 权威指南》中的一个图来了解一下:


    CMSIS 标准

    ARM 公司为了能让不同的芯片公司生产的 Cortex-M3 芯片能在软件上基本兼容,和芯片生产商共同提出了一套标准 CMSIS 标准(Cortex  Microcontroller  Software  Interface  Standard )  ,翻译过来是“ARM Cortex™  微控制器软件接口标准”。 ST 官方库就是根据这套标准设计的。基于 CMSIS 应用程序基本结构:


    CMSIS 分为 3 个基本功能层:

    1)  核内外设访问层:ARM 公司提供的访问,定义处理器内部寄存器地址以及功能函数。
    2)  中间件访问层:定义访问中间件的通用 API,也是 ARM 公司提供。
    3)  外设访问层:定义硬件寄存器的地址以及外设的访问函数。
    从图中可以看出, CMSIS 层在整个系统中是处于中间层,向下负责与内核和各个外设直接打交道,向上提供实时操作系统用户程序调用的函数接口。如果没有 CMSIS 标准,那么各个芯片公司就会设计自己喜欢的风格的库函数,而 CMSIS 标准就是要强制规定,芯片生产公司设计的库函数必须按照 CMSIS 这套规范来设计。

    一个简单通俗的例子

    我们在使用 STM32 芯片的时候首先要进行系统初始化, CMSIS 规范就规定,系统初始化函数名字必须为 SystemInit,所以各个芯片公
    司写自己的库函数的时候就必须用 SystemInit 对系统进行初始化。CMSIS 还对各个外设驱动文件的文件名字规范化,以及函数名字规范化等等一系列规定。上一节讲的函数GPIO_ResetBits 这个函数名字也是不能随便定义的,是要遵循 CMSIS 规范的。至于 CMSIS 的具体内容就不必多讲了,需要了解详细的朋友可以到网上搜索资料

    STM32官方固件库包的结构

    官方 V3.5 版本的固件库包的目录结构:



    Libraries 文件夹

    有 CMSIS 和 STM32F10x_StdPeriph_Driver 两个目录,这两个目录包含 固 件 库 核 心 的 所 有 子 文 件 夹 和 文 件 。 其 中 CMSIS 目 录 下 面 是 启 动 文 件 ,STM32F10x_StdPeriph_Driver 放的是 STM32 固件库源码文件。源文件目录下面的 inc 目录存放的是 stm32f10x_xxx.h 头文件,无需改动。src 目录下面放的是 stm32f10x_xxx.c 格式的固件库源码文件。每一个.c 文件和一个相应的.h 文件对应。这里的文件也是固件库的核心文件,每个外设对应的一组文件。

    Project 文件夹

    有两个文件夹,顾名思义, STM32F10x_StdPeriph_Examples 文件夹下面存放的的 ST 官方提供的固件实例源码,在以后的开发过程中,可以参考修改这个官方提供的实例来快速驱动自己的外设,很多开发板的实例都参考了官方提供的例程源码,这些源码对以后的学习非常重STM32F10x_StdPeriph_Template 文件夹下面存放的是工程模板。Utilities 文件下就是官方评估板的一些对应源码。

    固件库的帮助文档

    根目录中还有一个 stm32f10x_stdperiph_lib_um.chm 文件,直接打开可以知道,这个文档学习过程中非常有用

    关键文件介绍

    提供进入 M3 内核接口文件

    位于\Libraries\CMSIS\CM3\CoreSupport 目录下面的core_cm3.c 和 core_cm3.h 文件。这是 ARM 公司提供,对所有 CM3 内核的芯片都一样,你永远都不需要修改这个文件!

    启动文件以及比较基础的寄存器定义以及中断向量定义的文件

    位于\Libraries\CMSIS\CM3\DeviceSupport目录下有三个文件:system_stm32f10x.c,  system_stm32f10x.h 以及 stm32f10x.h 文件。

    system_stm32f10x.c,  system_stm32f10x.h文件

    在这对文件里面有一个非常重要的 SystemInit()函数,这个函数在我们系统启动的时候都会调用,用来设置系统的整个时钟系统。

    stm32f10x.h 文件

    这个文件相当重要,只要你做 STM32 开发,你几乎时刻都要查看这个文件相关的定义。这个文件打开可以看到,里面非常多的结构体以及宏定义。这个文件里面主要是系统寄存器定义申明以及包装内存操作········

    启动文件

    位于DeviceSupport\ST\STM32F10x \startup文件夹下,在\startup\arm 目录下,我们可以看到 8 个 startup 开头的.s 文件。这里之所以有 8 个启动文件,是因为对于不同容量的芯片启动文件不一样。对于 103 系列,主要是用其中 3 个启动文件:
    startup_stm32f10x_ld.s     :  适用于小容量  产品
    startup_stm32f10x_md.s  :  适用于中等容量产品
    startup_stm32f10x_hd.s   :  适用于大容量产品
    这里的容量是指 FLASH 的大小.判断方法如下:
    小容量:FLASH≤32K
    中容量:64K≤FLASH≤128K
    大容量:256K≤FLASH

    对于本人使用的STM32-F103-ZET06属于大容量产品,所以做工程的时候选择startup_stm32f10x_hd.s文件

    启动文件作用:打开启动文件看看:启动文件主要是进行堆栈之类的初始化, 中断向量表以及中断函数定义。启动文件要引导进入 main 函数。 Reset_Handler中断函数是唯一实现了的中断处理函数,其他的中断函数基本都是死循环。   跟踪工程,会发现Reset_handler 在我
    们系统启动的时候会调用,下面让我们看看 Reset_handler 这段代码:
    ; Reset handler
    Reset_Handler    PROC
    EXPORT   Reset_Handler              [WEAK]
    IMPORT   __main
    IMPORT   SystemInit
    LDR      R0, =SystemInit
    BLX      R0            
    LDR      R0, =__main
    BX       R0
    ENDP

    据IMPORT   __main知道,这里导入 main 函数,同时在进入 main 函数之前,且调用 SystemInit 系统初始化函数。注释:引导程序进入__main(此__main是C_Library中的函数,非main()),这里启动文件只讲到这:详细可去搜索相应型号的芯片启动文件的解析

    其他几个文件 stm32f10x_it.c,stm32f10x_it.h 以及 stm32f10x_conf.h 文件

     stm32f10x_it.c、stm32f10x_it.h顾名思义这对文件是用来中断服务函数,stm32f10x_conf.h(confer:参看文件打开可以看到一堆的#include,这里你建立工程的时候,可以注释掉一些你不用的外设头文件.

    展开全文
  • python标准库之glob介绍 glob文件名模式匹配,不用遍历整个目录判断每个文件是不是符合。 1、通配符 星号(*)匹配零个或多个字符 import glob for name in glob.glob('dir/*'): print (name) dir/file.txt ...
  • Python 标准库glob 获取文件夹下 文件绝对路径/相对路径 指定文件类型/全部 import glob path = 'E:\Python\Annotations' #文件夹绝对路径 xmllist = glob.glob(path + '\*.xml') #指定xml类型 print(xmllist) #...
  • Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期...
  • 可以看有两个库函数,文件夹1.0.8是安装的标准库文件,2.14.0文件夹是HAL库文件。 解决步骤 打开标准库工程,打开库操作图标 再点击上层的OK 重新编译工程,完美解决 当然,如果标准库切换为HAL也是同样的方法...
  • 因为要保存文件,所以需要引入彼岸OS,这里列举常用的几个函数。 1、os.sep 获得当前操作系统使用的目录分隔符,比如 Windows 就会得到\而 Linux/Unix 就会得到/ os.name 获得当前使用的操作系统,Windows 是 NT ...
  • Maven是一个项目管理工具,它包含 了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期...
  • 分页(无限滚动或标准分页,即跨多个页面的帖子) Atom Feeds 可切换的订阅按钮(需要外部服务) 使用代码语法突出 支持Google Analytics(分析)跟踪 支持Disqus评论(不是Ghost标准) 入门 部署方式 重要提示...
  • 分页(无限滚动或标准分页,即跨多个页面的帖子) Atom Feeds 可切换的订阅按钮(需要外部服务) 使用代码语法突出 支持Google Analytics(分析)跟踪 支持Disqus评论(不是Ghost标准) 入门 部署方式 重要提示:...
  • C++标准库和stl差别

    2017-05-08 13:19:00
    C++库文件夹:开发工具和语言—visual studio文档—visual C++—參考信息—库參考—standard C++ library C#库文件夹:C#使用.NET Framework 类库。...C++标准库的内容分为10类: C1.语言支持 C2.输入...
  • Python标准库简介

    2015-07-14 11:07:00
    Python标准库包括的内容是非常广泛的,通过标准库文件夹长度和内容就可明确到这一点。标准库包括一些模块是使用C语言来编写的。比方訪问系统I/O的文件功能,这些功能对Python开发者来说是不能直接訪问的。因此这些...
  • 主要介绍了Python标准库shutil用法,结合实例形式分析了shutil库针对文件与文件夹各种常见操作技巧与相关使用注意事项,需要的朋友可以参考下
  • STM32CubeIDE移植标准库

    千次阅读 2020-09-08 16:28:45
    本文基于STM32CubeIDE+ 标准库 +STM32F013CBT6,编写demo点亮LED灯。 1、新建工作空间; 2、新建STM32工程 2.1、选择芯片 2.2、建立空文件 3、添加标准库文件 使用到的标准库问价如下: 3.1、...
  • python标准库之os模块

    2020-04-24 12:37:04
    python标准库之os模块查看当前路径当前路径下所有文件查看绝对路径查看路径的文件夹部分和文件名部分切割文件路径获取文件夹获取文件名合并文件夹与文件名查看文件时间最后修改时间最后访问时间最后访问时间查看文件...
  • Python cmd进入文件夹目录指令,以安装python第三方 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下...
  • 初识STM32标准库

    2016-07-03 09:01:00
    STM32标准库可以从官网获得; 在使用库开发时,我们需要把 libraries 目录下的库函数文件添加到工程中,并查阅库帮助文档来了解 ST 提供的库函数,这个文档说明了每一个库函数的使用方法。 ...
  • Python 标准库

    2019-05-09 16:01:00
    os 模块 os模块提供了非常丰富的方法用来处理文件和...os.listdir(path) 返回工作目录下的文件夹和文件列表 os.stat(path) 返回目录或文件信息 os.mkdir(path[,mode]) 创建一个目录,默认 mode 为777 os....
  • Keil5建立STM32标准库模板

    千次阅读 2021-03-14 16:28:03
    Keil5建立STM32标准库模板标准库模板建立1. 准备工作2. 新建一个工程文件夹3. 使用MDK新建工程4. 复制固件库源码到工程5. 在MDK空工程中添加文件6. 工程配置7. 编译工程 标准库模板建立 环境生明: keil版本:keil...
  • 标准库OS 和 文件

    2019-05-06 21:38:45
    1、标准库OS常用命令 准备工作:自建一个文件夹,并将当前目录修改为该文件夹 import os os.getcwd() #查看当前路径 ##### 输出 ##### 'D:\\Python' 通过chdir()修改路径: os.chdir(r"D:\Python\os learn") ###...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • C标准库源代码

    2012-03-31 10:08:55
    标准库文件是以lib这种编译好的静态库的行式给你的,一般在lib文件夹里,厂家不可能给你源文件,而且源文件不一定是C写的,也有些是汇编写的,就算是C不同厂家写的也不一定一样,接口一样就行。 但头文件是C++写的,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,707
精华内容 1,082
关键字:

标准库文件夹