stm32--对固件库的认识2
背景
其实在使用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相关推荐
- STM32 串口固件库中定义的几个中断标志什么意思?
STM32 串口固件库中定义的几个中断标志位什么意思? #define USART_IT_PE ((uint16_t)0x0028) #define USA ...
- #STM32标准固件库的硬件SPI(NSS为软件)封装函数库
#基于STM32标准固件库的硬件SPI(NSS为软件)封装函数库: 最近来回顾之前写过的SPI_Flash,打算重写一次SPI配置文件 spi协议最大的特点大概就是全双工了,因此stm32硬件spi的 ...
- STM32官方固件库
1 基于标准外设库的软件开发 1.1 STM32标准外设库概述 STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序.数据结构和宏组成,包括了微控制器所有外设的性能特征 ...
- STM32基于固件库学习笔记(11)RTC实时时钟
实时时钟(RTC) 小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx.STM32F102xx和STM32F103xx微控制器. 中容量产品是指闪存存储器容量在64K至128 ...
- STM32官方固件库代码解读--GPIO
最近闲得无聊,又把 stm32 拿了出来.之前学的时候是看的库函数版本,现在和寄存器版本的一起看感觉比一开始接触的时候看得顺畅多了,详细了解了底层寄存器的功能.之前用 stm32 只是调用函数,看了寄 ...
- STM32之固件库的调用(参考洋桃电子视频)
STM32固件库中有许多函数,每个函数代表着不同的意义. 在工程中,后缀为.s的是汇编语言编写的文件,后缀为.c的是C语言编写的文件. 在整个工程中,只有Startup中的startup_stmf10 ...
- STM32基于固件库学习笔记(4)(通用定时器)TIM3定时1S中断
STM32F103ZE系列定时器资源 有 TIME1 和 TIME8 等高级定时器,也有 TIME2~TIME5 等通用定时器,还有 TIME6 和TIME7 等基本定时器. 通用定时器:是一个通过可 ...
- 【STM32】获取STM32官方固件库
以STM32F103ZET6为例: 第一步:进入ST官网 http://www.st.com/content/st_com/en.html 第二步:搜索需要下载固件库芯片型号,例如: 第三步:找到对 ...
- STM32建立固件库小结
最近在复习固件库的使用,顺便写一下当作日记方便复习 1.找到固件库模板下载(已经上传) 2.新设置文件夹将模板里面的内容cv进去 3.打开keil,点击project建立new uvision pro ...
- STM32学习日志第一篇——如何在官网上下载最新的STM32的固件库
前言: 看着网上的方法很多都是古老的ST官网上下载的固件,所以现在有必要更新一下方法. 第一步: 进入官方网站 第二步 点击自己芯片的类型,例如我选择的是STM32F103系列 第三步 点击对应自己的 ...
最新文章
- 开发人员需知的Web缓存知识(转)
- shell脚本一键安装JDK及配置环境变量
- [转]九个Console命令,让js调试更简单
- 【Python】青少年蓝桥杯_每日一题_5.15_打印 99 乘法表
- flink和kafka区别_Apache Flink和Kafka入门
- Excel 使用VBA 使表格的值被修改后填充颜色标注
- Shell 双引号和单引号的区别
- 实时计算之storm
- JDK、SDK、JRE、JVM概念详解
- windbg调试C#代码(二)
- 兴趣爱好-常用的10种算法
- 分享400个微信小程序模板和小程序设计模板
- 华为云计算IE面试笔记-云磁盘和普通磁盘的区别。
- 空格符号复制html,cf空格符号复制(cf空格代码)
- 后端使用postman进行测试
- 90952-27-5,Thiol-PEG4-alcohol含有羟基和巯基的交联剂
- Apache POI(Word)教程_编程入门自学教程_菜鸟教程-免费教程分享
- ubuntu18.04中文输入法(by搜狗)
- 2021最全大数据学习路线(建议收藏)
- mysql 网络,MySQL :: MySQL 网络研讨会
热门文章
- webform 跨窗体传值
- js实现语音播报功能
- 无责任Windows Azure SDK .NET开发入门篇三[使用Azure AD 管理用户信息]
- 精算模型1 一元生存分析3 条件概率与截尾分布
- UA MATH564 概率论 QE练习题 概率极限理论
- 资源文件相关学习总结
- 图解Oracle 12c 安装示例数据库
- SpringBoot2.0 整合 ElasticSearch框架,实现高性能搜索引擎
- 第二阶段团队绩效评分
- 使用Python的http.server实现一个简易的Web Api对外提供HanLP拼音转换服务