做网站怎么选关键词,发布新闻稿,直播网站可以做毕设吗,广州微网站建设目录
GPIO
LED
蜂鸣器
RCC外设 GPIO外设
总概
操作STM32的GPIO
代码
LED闪烁
LED流水灯
蜂鸣器#xff01;
连接方式 GPIO
GPIO输出#xff1a;向外驱动控制
GPIO输入#xff1a;读取#xff0c;捕获#xff08;信息#xff09;#xff08;控制#xff09…目录
GPIO
LED
蜂鸣器
RCC外设 GPIO外设
总概
操作STM32的GPIO
代码
LED闪烁
LED流水灯
蜂鸣器
连接方式 GPIO
GPIO输出向外驱动控制
GPIO输入读取捕获信息控制 右侧两个二级管阻止不在0-3.3V的电压流入内部电路通过VDD,VSS将异常电流抹消
上拉电阻VDD/下拉电阻VSS给输入提供默认电平防止处于浮空状态输入数据易被干扰不确定。
上通下断上拉输入模式默认为高电平的输入模式//
都断浮空输入模式。
施密特触发器对输入电压进行整形
中间留一定范围避免因信号波动造成的输出抖动
位设置/清除寄存器单独操作寄存器某一位一般寄存器操作的16个端口只能整体读写
两个MOS管电子开关信号控制的开关。
推挽P-MOS,N-MOS均有效。寄存器为1P-MOS通N-MOS断接VDD输出高电平。寄存器为0N-MOS通P-MOS断接VSS输出低电平。
开漏仅N-MOS有效仅低电平有驱动能力。
关闭都无效输出关闭外部控制电平 输出时可以进行输入操作输入时不能进行输出操作 LED
长脚短脚-极
内部较小较大- 选择看IO口高低电平的驱动能力
GPIO在推挽输出模式下,高低电平均有比较强的驱动能力(均可)
很多单片机或者芯片,都使用了高电平弱驱动,低电平的强驱动的规则(第一种)
蜂鸣器
有源蜂鸣器内部自带振荡源将正负极接上直流电压即可持续发声频率固定
中间引脚接低电平低电平触发响。高电平灭 无源蜂鸣器内部不带振荡源需要控制器提供振荡脉冲才可发声调整提供振荡脉冲的频率可发出不同频率的声音
PNP三极管驱动基极给低电平三极管导通
NPN三极管驱动基极给高电平三极管导通 RCC外设 , GPIO外设
RCC外设
void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState); GPIO外设
void GPIO_DeInit(GPIO_TypeDef* GPIOx);//复位指定的GPIO外设
void GPIO_AFIODeInit(void);//复位AFIO外设
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);//结构体变量赋默认值
//读取函数
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
//写入函数
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//设置高电平
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//设置低电平void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);//可单个引脚操作
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);//对16个端口进行写入操作 void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
用结构体的参数初始化GPIO口要先定义一个结构体变量,然后再给结构体赋值,最后调用这个函数。这个函数内部就会自动读取结构体的值,然后自动把外设的各个参数配置好。 总概
操作STM32的GPIO 使用RCC开启GPIO的时钟 :
外设的寄存器只有在时钟信号存在时才能被访问和配置 初始化GPIO :
定义结构体变量用于存储 GPIO 配置参数。
设置参数*3 使用输出或输入的函数控制GPIO口
电灯推挽输出GPIO_Mode_Out_PP。RESET低SET高
这里是低电平点亮推挽下都可以把led倒着插也可以闪 代码
LED闪烁
GPIO_WriteBit
#include stm32f10x.h // Device header
#include Delay.hint main(void)
{//时钟开启GPIOA的RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//初始化GPIOGPIO_InitTypeDef GPIO_InitStructure;//结构体存放参数GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP;//参数设置*3GPIO_InitStructure.GPIO_Pin GPIO_Pin_0;GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_Init(GPIOA, GPIO_InitStructure);while(1){ //法一GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET);//设为低电平Delay_ms(500);GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET);//设为高电平Delay_ms(500);//法二GPIO_ResetBits(GPIOA, GPIO_Pin_0); Delay_ms(500); GPIO_SetBits(GPIOA, GPIO_Pin_0); Delay_ms(500); //法三01指定强制类型转换为BitAction枚举GPIO_WriteBit(GPIOA, GPIO_Pin_0, (BitAction)0); Delay_ms(500); GPIO_WriteBit(GPIOA, GPIO_Pin_0, (BitAction)1); Delay_ms(500); }}
LED流水灯
GPIO_InitStructure.GPIO_Pin GPIO_Pin_All;
法一GPIO_Pin_All选择所有端口0-7
法二按位或操作 GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2······0-15可
GPIO_Write整体操作一个一个来没必要太复杂
低电平点亮所以 ~0x0001 , 按位取反c语言不支持直接写二进制所以转化为16进制
int main(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitTypeDef GPIO_InitStructure;//结构体存放参数GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP;//参数设置*3GPIO_InitStructure.GPIO_Pin GPIO_Pin_All;GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_Init(GPIOA, GPIO_InitStructure);while(1){ GPIO_Write(GPIOA, ~0x0001); //0000 0000 0000 0001Delay_ms(100); GPIO_Write(GPIOA, ~0x0002); //0000 0000 0000 0010Delay_ms(100); GPIO_Write(GPIOA, ~0x0004); //0000 0000 0000 0100Delay_ms(100); GPIO_Write(GPIOA, ~0x0008); //0000 0000 0000 1000Delay_ms(100); GPIO_Write(GPIOA, ~0x0010); //0000 0000 0001 0000Delay_ms(100); GPIO_Write(GPIOA, ~0x0020); //0000 0000 0010 0000Delay_ms(100); GPIO_Write(GPIOA, ~0x0040); //0000 0000 0100 0000Delay_ms(100); GPIO_Write(GPIOA, ~0x0080); //0000 0000 1000 0000Delay_ms(100); }
}
蜂鸣器
GPIOBPin2 低电平触发
int main(void)
{/*开启时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //开启GPIOB的时钟 GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Pin GPIO_Pin_12; //GPIO引脚赋值为第12号引脚GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; GPIO_Init(GPIOB, GPIO_InitStructure); while (1){ GPIO_ResetBits(GPIOB, GPIO_Pin_12); //设为低电平鸣叫Delay_ms(100); GPIO_SetBits(GPIOB, GPIO_Pin_12); //高电平停止Delay_ms(100); GPIO_ResetBits(GPIOB, GPIO_Pin_12); Delay_ms(100); GPIO_SetBits(GPIOB, GPIO_Pin_12); Delay_ms(700); }
} 连接方式 LED闪烁 LED流水灯 蜂鸣器 CTRLF搜索