历史上的今天
今天是:2024年11月09日(星期六)
2021年11月09日 | STM32固件库学习(1)
2021-11-09 来源:eefocus
一、为什么要学习stm32固件库
使用寄存器编程费时、费力、程序移植性差且容易出错。
st公司考虑到上述缺点故推出一套便于编程的API。
stm32固件库的开发的本质是API函数的使用。
举例:使用GPIO点亮一个LED灯(GPIO控制输出一个低电平)
使用寄存器
先要查找所需的寄存器哪一位是控制那个引脚。那个寄存器控制它的输出等。比较费劲。
使用stm32固件库
stm32固件库提供的API函数,有对GPIO的操作。通过此函数实现对GPIO的控制。
此函数就是对GPIO的相关寄存器操作的封装。
二、CMSIS标准
CMSIS(Cortex Microcontroller saftware Interface Standard):ARM Cortex 微控制器软件标准。
基于Cortex内核的芯片生产厂商有很多,为解决不同生产厂商的Cortex芯片软件兼容问题,ARMVP公司和其他芯片生产厂商指定了CMSIS标准。
CMSIS使用举例:初始化必须使用systemInit()进行初始化。

在 CMSIS 核心层分为 3 个基本功能层:
(1)核内外设访问层 :ARM 公司提供的访问,定义处理器内部寄存器地址 以及功能函数。
(2)中间件访问层 :定义访问中间件的通用 API,由 ARM 提供,芯片厂商 根据需要更新。
(3)外设访问层 :定义硬件寄存器的地址以及外设的访问函数,比如 ST 公司提供的固件库外设驱动文件(stm32f10x_gpio.c 等文件)就是在这个访问 层。
总的来说其实 CMSIS 就是统一各芯片厂商固件库内函数的名称,比如在系统 初始化的时候使用的是 SystemInit 这个函数名,那么 CMSIS 标准就是强制所有 使用 Cortex 核设计芯片的厂商内固件库系统初始化函数必须为这个名字,不能 修改。
三、固件库内文件夹及文件介绍
创建工程必备的两个文件

文件之间的关系
上一篇:STM32F103启动文件
下一篇:GPIO寄存器描述
史海拾趣
|
国内目前的社会治安真的让人心寒。年底了,入屋盗窃案件大幅上升。我这几天已经听说过超过20户的门被橇开盗窃。使用如下的简易工具,能在十数秒甚至几秒内打开95%的门锁。 目前市场上有些商品化的报警器,可以实现使用无线发射,通过电话 ...… 查看全部问答> |
|
lways @(posedge CLK) begin COUNT=COUNT+1; if (COUNT[13:4] < PWM_COUNT) PWM_REG=1; else PWM_REG=0; 如果实现20路pwm 的话是在一个always里面判断省资源还是 设置多个 always语句啊???… 查看全部问答> |
|
本公司是从事公交车,旅游车电子配件开发,生产,销售的企业,现需招聘嵌入式开发工程师 工作地点:上海市闵行区 年薪6W-12W,并且享受产品权益金、项目奖 要求 精通数/模电子电路设计,会绘制PCB板,熟悉Linux平台驱动开发,本科以上学历, ...… 查看全部问答> |
|
ORG 00HLJMP MAINORG 30HMAIN:MOV P1,#0FFHMOV P3,#0FFHLCALL YSMOV P1,#06HMOV P3,#0FFHLJMP MAINYS:MOV R0,#64HD1:MOV R1,#64HD2:MOV R2,#18HDJNZ R2,$DJNZ R1,D2DJNZ R1,D1RETEND 就这么个简单的程序为什么烧录不进去啊,反正一点下载就会出现C ...… 查看全部问答> |
|
Device may be operating in a low-power mode. Do you want to bring it out of this mode? 这是啥原因啊?… 查看全部问答> |
|
如果一号工位有球那么抓一号工位的球,如果2号工位有球抓2号工位的球,如果两个工位都有球,抓白球。 帮我改一下,在主函数里面,谢谢了! #include #define uchar unsigned char #define uint unsigned int uchar code table[ ...… 查看全部问答> |







