今天学习第一个片上外设:GPIO
p2.1:输出模式分别为通用/复用输出推挽/开漏等四种模式。
推挽(PP):向外推电流---0:低电压,1:高电压
开漏(OD):向内拉电流---0:低电压,1:高阻抗。开漏模式下P-MOS管始终断开即表现为N-MOS管的漏极断开。
通用:是通过CPU直接向输出数据寄存器写0/1来控制两个MOS的开关状态。
复用:是CPU交给其它的片上外设写0/1来控制MOS管的开关状态。
从而向引脚输出高低电压
图1
IO的最大输出速度:交替向IO引脚写0/1且输出不失真的最快速度!!
输出速度有2MHZ、10MHZ、50MHZ,选择输出速度要选择满足条件的最小输出速度,防止出现硬件之间的电磁干扰问题、还会增加耗电。
LED闪灯实验:
1.首先由控制目标:控制板载LED闪烁--->确定LED的工作模式---查看stm32最小系统板的电路原理图,观察板载LED部分的电路开关位置(靠近发光二极管的阳极/阴极?)来确定是推挽输出还是开漏输出。-------->开漏输出、PC13引脚
2.电路图分析结束开始创建开发环境,写代码
【注意】创建模板工程后,修改名称时要将文件夹的名称和内部的.uvprojx文件名称同步修改!!
2.1:【注意】先要开始GPIOx的时钟---为器官(GPIOx这个片上外设)提供心跳。---->时钟树章节会有详解!!!
2.2:GPIO编程接口的认识:GPIO_Init:初始化gpiox引脚----GPIOx,pin_x、输出速度、输出模式。
GPIO_Writebit:向输出数据寄存器写0/1--->则使用的是CPU--通用输出开漏模式。
还有两个是用于读取比特位,不常用,暂时没记哈哈。
3.实现闪灯效果:
使用了封装的头文件:"delay.h",使用前需要在项目顶端声明一下,且【注意】:封装的delay.h中使用的是Delay函数,写成delay()会有报错!!!
通过while循环,实现亮灯---100ms---灭灯---100ms。