stm32学习记录,GPIO输出 7月5日1.1学习了GPIO的四种输出模式通用输出推挽通用输出开漏复用输出推挽复用输出开漏通用单片机的cpu直接控制GPIO外设输出高低电平复用cpu通过其他外设间接控制GPIO外设输出高低电平推挽推是指向外输出电流挽是指外面向内输入电流。工作时N-MOS和P-MOS交替接通N接通P断开则说明寄存器输出0引脚输出低电平。P接通N断开则说明寄存器输出1引脚输出高电平。开漏N-MOS的漏极一直处于短路状态即P-MOS一直断开此时寄存器输出0引脚输出低电平寄存器输出1引脚悬空呈现高阻抗状态。1.2IO的最大输出速度IO的最大输出速度向IO写入01且不失真的最大速度上升时间IO口从低电平上升到高电平所需要的时间下降时间IO口从高电平下降到低电平所需要的时间保持时间IO口在高电平保持的时间限制最大速度的因素上升时间和下降时间的长短1.3LED闪灯实验有两种接法推挽开漏此次实验是开漏代码如下#include stm32f10x.h#include delay.hint main(void){//开启GPIOC接口RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//初始化IO引脚PC13通用输出开漏模式最大输出速度是2MHZGPIO_InitTypeDef GPIO_InitStruct{0};GPIO_InitStruct.GPIO_PinGPIO_Pin_13;GPIO_InitStruct.GPIO_ModeGPIO_Mode_Out_OD;GPIO_InitStruct.GPIO_SpeedGPIO_Speed_2MHz;GPIO_Init(GPIOC,(GPIO_InitStruct));while(1){GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET);//写0,亮Delay(1000);//延迟100msGPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET);//写1灭Delay(1000);}}1.4GPIO4种输入模式输入上拉上拉电阻闭合输入下拉下拉电阻闭合输入浮空上拉下拉电阻都闭合1.5按钮实验代码如下#include stm32f10x.h#include delay.hint main(void){//开启GPIOC接口RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//初始化IO引脚PC13通用输出开漏模式最大输出速度是2MHZGPIO_InitTypeDef GPIO_InitStruct{0};GPIO_InitStruct.GPIO_PinGPIO_Pin_0;GPIO_InitStruct.GPIO_ModeGPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_SpeedGPIO_Speed_2MHz;GPIO_Init(GPIOA,(GPIO_InitStruct));GPIO_InitStruct.GPIO_PinGPIO_Pin_1;GPIO_InitStruct.GPIO_ModeGPIO_Mode_IPU;GPIO_Init(GPIOA,(GPIO_InitStruct));//GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);while(1){if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)Bit_RESET){GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);}else{GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);}}}