背景

其实在使用FPGA的SDK编程的时候,就有过这么一个问题,就是,你不知道固件库文件描述的C语言的意思,看起来特别困难。这一点在STM32中仍然会是一个问题,这篇文章就是要解决这个问题,跨越对固件库的认识障碍。而且在编程的过程中也需要一步一步的查询手册,如何查询手册,这些才是授人以渔。

1、以点亮一个LED工程讲解

新建工程,选择stm32的芯片型号,这里以F4系列


然后会提示,是否使用keil自带的库文件

自己建立2个文本文件,另外把官方的F4固件库文件copy过来,然后添加到工程中。

更改编辑器属性

编写代码如下:


注意上图,中的错误写法,如果这样写,会影响到输出位的其他位。

此外,当我们下载到开发板时,发现小灯并不能亮起来,因为GPIO的属性默认都是输入,如果要配置GPIO需要将模式设置为输出。

由于01为通用输出模式,也就是说第20位我们需要设置为1。
因此,需要采用 GPIO_MODE |=1<<20;这样才不会影响其他位。


这时候,我们发现还是没法点亮LED灯,是因为由于STM32是一种比较高级的微型控制器,为了节省功耗,系统上电的时候,每一个外设的时钟都是关闭的,这个外设的时钟又由RCC控制,可以控制每一个外设的时钟。
我们的GPIO是挂在到AHB这个总线上面的。
下面,我们来开启时钟,看一下RCC AHB1外设时钟使能寄存器(RCC_AHB1ENR)

现在,我们来开启GPIOH,也就是我们只需要把GPIOH置位为1即可,也就是第7位置位为1.

下面,实验小灯闪烁:

`c`
#include "stm32f4xx.h"
void delay (unsigned int count)
{for (count=count;count!=0;count--);
}
int main(void)
{
RCC_AHB1ENR |=1<<(7);  //开启时钟外设
GPIOH_MODE |=1<<(20);                //配置PH10为输出端口GPIOH_ODR &= ~ (1<<(10));           //将ODR的第10位置位为0//GPIOH_ODR =  (0<<10);       错误写法while(1){GPIOH_ODR &= ~ (1<<(10));       //亮delay(0xffff);GPIOH_ODR |=(1<<(10));      //灭delay(0xffff);}
}
void SystemInit(void)
{}

/用于存放寄存器映射/
#define GPIOH_MODE *(unsigned int *)(0x40021C00+0x0)
#define GPIOH_ODR *(unsigned int *)(0x40021C00+0x14)
#define RCC_AHB1ENR *(unsigned int *)(0x40023800+0x30)

//用于配置IO方向模式
//配置GPIO的输出位
//配置外设GPIOH的时钟

stm32--对固件库的认识2相关推荐

  1. STM32 串口固件库中定义的几个中断标志什么意思?

    STM32 串口固件库中定义的几个中断标志位什么意思? #define USART_IT_PE                       ((uint16_t)0x0028) #define USA ...

  2. #STM32标准固件库的硬件SPI(NSS为软件)封装函数库

    #基于STM32标准固件库的硬件SPI(NSS为软件)封装函数库: 最近来回顾之前写过的SPI_Flash,打算重写一次SPI配置文件 spi协议最大的特点大概就是全双工了,因此stm32硬件spi的 ...

  3. STM32官方固件库

    1 基于标准外设库的软件开发 1.1 STM32标准外设库概述 STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序.数据结构和宏组成,包括了微控制器所有外设的性能特征 ...

  4. STM32基于固件库学习笔记(11)RTC实时时钟

    实时时钟(RTC) 小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx.STM32F102xx和STM32F103xx微控制器. 中容量产品是指闪存存储器容量在64K至128 ...

  5. STM32官方固件库代码解读--GPIO

    最近闲得无聊,又把 stm32 拿了出来.之前学的时候是看的库函数版本,现在和寄存器版本的一起看感觉比一开始接触的时候看得顺畅多了,详细了解了底层寄存器的功能.之前用 stm32 只是调用函数,看了寄 ...

  6. STM32之固件库的调用(参考洋桃电子视频)

    STM32固件库中有许多函数,每个函数代表着不同的意义. 在工程中,后缀为.s的是汇编语言编写的文件,后缀为.c的是C语言编写的文件. 在整个工程中,只有Startup中的startup_stmf10 ...

  7. STM32基于固件库学习笔记(4)(通用定时器)TIM3定时1S中断

    STM32F103ZE系列定时器资源 有 TIME1 和 TIME8 等高级定时器,也有 TIME2~TIME5 等通用定时器,还有 TIME6 和TIME7 等基本定时器. 通用定时器:是一个通过可 ...

  8. 【STM32】获取STM32官方固件库

    以STM32F103ZET6为例: 第一步:进入ST官网  http://www.st.com/content/st_com/en.html 第二步:搜索需要下载固件库芯片型号,例如: 第三步:找到对 ...

  9. STM32建立固件库小结

    最近在复习固件库的使用,顺便写一下当作日记方便复习 1.找到固件库模板下载(已经上传) 2.新设置文件夹将模板里面的内容cv进去 3.打开keil,点击project建立new uvision pro ...

  10. STM32学习日志第一篇——如何在官网上下载最新的STM32的固件库

    前言: 看着网上的方法很多都是古老的ST官网上下载的固件,所以现在有必要更新一下方法. 第一步: 进入官方网站 第二步 点击自己芯片的类型,例如我选择的是STM32F103系列 第三步 点击对应自己的 ...

最新文章

  1. 开发人员需知的Web缓存知识(转)
  2. shell脚本一键安装JDK及配置环境变量
  3. [转]九个Console命令,让js调试更简单
  4. 【Python】青少年蓝桥杯_每日一题_5.15_打印 99 乘法表
  5. flink和kafka区别_Apache Flink和Kafka入门
  6. Excel 使用VBA 使表格的值被修改后填充颜色标注
  7. Shell 双引号和单引号的区别
  8. 实时计算之storm
  9. JDK、SDK、JRE、JVM概念详解
  10. windbg调试C#代码(二)
  11. 兴趣爱好-常用的10种算法
  12. 分享400个微信小程序模板和小程序设计模板
  13. 华为云计算IE面试笔记-云磁盘和普通磁盘的区别。
  14. 空格符号复制html,cf空格符号复制(cf空格代码)
  15. 后端使用postman进行测试
  16. 90952-27-5,Thiol-PEG4-alcohol含有羟基和巯基的交联剂
  17. Apache POI(Word)教程_编程入门自学教程_菜鸟教程-免费教程分享
  18. ubuntu18.04中文输入法(by搜狗)
  19. 2021最全大数据学习路线(建议收藏)
  20. mysql 网络,MySQL :: MySQL 网络研讨会

热门文章

  1. webform 跨窗体传值
  2. js实现语音播报功能
  3. 无责任Windows Azure SDK .NET开发入门篇三[使用Azure AD 管理用户信息]
  4. 精算模型1 一元生存分析3 条件概率与截尾分布
  5. UA MATH564 概率论 QE练习题 概率极限理论
  6. 资源文件相关学习总结
  7. 图解Oracle 12c 安装示例数据库
  8. SpringBoot2.0 整合 ElasticSearch框架,实现高性能搜索引擎
  9. 第二阶段团队绩效评分
  10. 使用Python的http.server实现一个简易的Web Api对外提供HanLP拼音转换服务