zoukankan      html  css  js  c++  java
  • STM32F427|----------IO讲解与应用

    以下都是个人的理解,不一定正确:

    STM32的IO口只有俩作用:输入  输出  ,后面的模拟 和 复用 其实都是输入 输出的具体体现 然后都体现在了GPIO_Init()这个函数:

    void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)

    这是函数的原型,第一个参数是哪一组,第二个参数是具体得配置,是个结构体;

    GPIO_InitTypeDef GPIO_InitStruct;

    //五个参数在输入和输出的时候不一定全部写,看情况写

    GPIO_InitStruct.GPIO_OType=GPIO_OType_OD;
    GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN;
    GPIO_InitStruct.GPIO_Pin=GPIO_Pin_3;
    GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_UP;
    GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(GPIOE,&GPIO_InitStruct);

    IN: 输入    比如IO外接传感器,上下位机通讯等

    OUT:输出   外接硬件,驱动电机等       

     AF:复用       最显然的复用就是USART 

       AN:模拟   ADC转换的时候经常用

     NOPULL:浮空     不上拉,也不下拉,基本没用过容易受干扰

    UP:上拉              拉到高点位 引脚无输入时为高电平

    DOWN:下拉    拉到低点位  引脚无输入时为低电平

     PP: 推挽 可以输出高低电平 连接数字器件 提高引脚输出电流的能力 

    OD: 开漏  外部不加上拉电阻,默认为低电平  提高引脚输入电流的能力

    已火焰传感器为例:连接后其输出一路低电平;则其引脚应该设置为上拉输入,高低电平相互链接,

    #define IN_Data  PEin(3)
    
    void OUTER_IN_Init()
    {
    	GPIO_InitTypeDef GPIO_InitStruct;
    	
    	RCC_AHB1PeriphClockLPModeCmd(RCC_AHB1Periph_GPIOE,ENABLE);
    	
    	GPIO_InitStruct.GPIO_OType=GPIO_OType_OD;
    	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN;
    	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_3;
    	GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_UP;
    	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
    	GPIO_Init(GPIOE,&GPIO_InitStruct);
    }
    
    
    int main()
    {
    	LED_Init();
    	OUTER_IN_Init();
    	RED_LED=ON;
    	BLUE_LED=OFF;
    	
    	while(1)
    	{
    	if(IN_Data==0)
    	{
    		RED_LED=~RED_LED;
    		BLUE_LED=~BLUE_LED;
    	}
    }	
    	return 0;
    }
    

      

  • 相关阅读:
    C语言指针入门
    c的动态内存管理
    汇编入门基础与helloworld
    汇编1
    汇编2——完整的例子集合
    算法与数据结构——选择,插入,希尔排序
    MySQL
    MySQL 笔记
    CSS样式优先级
    GIT使用笔记
  • 原文地址:https://www.cnblogs.com/Loving-Q/p/12803397.html
Copyright © 2011-2022 走看看