stm32单片机笔记

硬件平台:STM32开发板、ST_link,Jlink,温湿度传感器,GPRS模块,2.8寸电阻屏
1,GPIO操作
2,串口收发数据
3,LCD屏使用及显示
4,温湿度传感器
5,GPRS模块及项目整合

ST _Link
32开发板
51单片机:40个引脚
AT89C51
ST:意法半导体公司,芯片厂商,intel,高通,、骁龙855,–Cortex—A76(ARM),联发科
STM32F103zet6,ST
ARM:内核架构
A系列
R系列
M系列
在这里插入图片描述
内核:Cortex—M3
72MHz,11.0592MHz
FLASH:512Kb,内存,RAM:64Kb;运存
144个引脚,112个I/0
I/0命名方式:
P0.0=0/1;
第一表示端口号,A--G
引脚号0-15,固定的
每个端口都有16个引脚
寄存器:unsigned char 0—255 一个字节,8位
Int:在8位或者16位处理器中是2个字节,在32位以上处理器都是32位
32位处理器:寄存器都是32位,unsigned int 4个字节
I/0:输入输出,GPIO:通用的输入输出口
功能的选择:就是对I/0的配置
输入:
浮空输入:I/0有输入电平决定
上拉输入(弱上拉):I/0空闲时的状态是高电平或者低电平,不影响I/0的输入和输出
下拉输入(弱上拉)
模拟输入:当外部输入一个模拟量是选择模式输入模式
输出:
通用推挽输出
通用开漏
复用推挽
复用开漏
通用:做为普通I/0功能,输入输出功能
复用:除了做为普通I/0之外的其他功能时选择为复用,不包括模数转换功能
推挽和开漏
推挽:I/0既能输出低电平也能输出高电平
开漏:只能输出低电平,常用于总线状态,一个I/0连接多个设备时,需外接上拉

GPIOx_IDR) (x=A…G )
数字0:表示所在的位
IDR:表示功能为输入数据寄存器
IDR后的数字:表示引脚号
r:表示操作方式为只读
变量a判断第5位是0还是1?
&:按位与:任何数(1/0)和1相与不变,与0相与都为0
|:按位或:任何数(1/0)和1相或为1,与0相或不变(还是本身)
<<左移:左移一位,右边补0,相当于乘2
~取反:0变1,1变0
a,把变量的第5,7位清0,其他位不变?
a&=~(0x5<<5);
000010100000
111101011111
a,把变量的第5位置1,其他位不变?
a|=1<<5;
0000100000
32单片机上电时大部分外设时钟是关闭的?低功耗
上电开启相关外设时钟

配置I/0流程:PB5,通用推挽输出
1,找到中文参考手册2.3节,存储器映像,找到外设所在总线APB2
2,找第6章6.3节RCC寄存器描述,找总线使能寄存器,把相应外设功能位置位
3,配置I/0模式:选择功能
1)找第8章8.2节,GPIO 寄存器描述
2)如果是第0-7引脚选择配置低位寄存器
a.先看MODEx,决定输入还是输出
b.再看CNFx
3)如果是8-15引脚选择配置高位寄存器
4)如果是输入:操作输入数据寄存器(IDR)
5)如果是输出:操作输出数据寄存器(ODR)

模块化编程:
每一个功能都建立一个.c和.h
.c:函数定义,全局变量的定义
.h:函数声明,全局变量的外部声明

猜你喜欢

转载自blog.csdn.net/weixin_43175701/article/details/85717486