1端口设置
GPIO_Initure.Mode = GPIO_MODE_ANALOG;
模拟输入和输出都可以,和ADC输入模式不一样的。
在cubeMX中配置,会看到一个低功耗配置选项,是否把不用的GPIO配置为模拟输入。原因是芯片上电默认GPIO是浮空输入的,在干扰和噪声环境下,内部的施密特触发器输出随机电平状态,造成功耗上升。而设置为模拟复用,施密特触发器的输出强制为0,降低功耗和噪声
2 PWR /(PWR_CSR) 电源控制/状态寄存器PWR power control/status register 0x04
偏移地址:0x0000 0008(复位值:不通过从待机模式唤醒进行复位)APBAPB与标准的 读操作相比,读取此寄存器需要更多的 周期。
EWUP3 WKUP3 (Enable WKUP pin 3):使能引脚1此位由软件置和清零。
0:WKUP3I/OWK 用于通用IO口 引脚上的事件不会将器件从待机模式唤醒。
1:WKUP3 引脚用于从待机模式唤醒器件并被强制下拉 上升沿触发唤醒系统。
开漏Open Drain(开集Open Collector)
开漏输出:输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行,适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA以内)。
栅极输入 0 时,NMOS 的漏极和源极导通,输出0。
栅极输入 1 时,NMOS 不导通,漏极高阻,输出1(需要外部上拉电路,上升沿比较缓慢)。
推挽输出:可以输出高,低电平,连接数字器件。
栅极输入 0 时,高侧PMOS 高阻,低侧NMOS导通,输出0。
栅极输入 1 时,高侧PMOS 导通,低侧NMOS高阻,输出1(不需要外部上拉电路,上升沿比较陡峭)
GPIO模拟配置代码示例
/* (1)使能GPIOA的外设时钟*/
/* (2)选择GPIOA引脚0上的模拟模式(00 -默认值)*/
RCC->IOPENR |= RCC_IOPENR_GPIOAEN; /* (1) */
GPIOA->MODER &= ~(GPIO_MODER_MODE0); /* (2) */
由于两管栅极工作电压极性相反,故将两管栅极相连作为输入端,两个漏极相连作为输出端,如图1(a)所示,则两管正好互为负载,处于互补工作状态。
当输入低电平(Vi=Vss)时,PMOS管导通,NMOS管截止,输出高电平,如图1(b)所示。
当输入高电平(Vi=VDD)时,PMOS管截止,NMOS管导通,输出为低电平,如图1(c)所示。
两管如单刀双掷开关一样交替工作,构成反相器(互补工作状态)
而与非门和或非门还有非门则是由CMOS来构造的。详见《数字设计原理与实践》P62
参考这个电路 R45 是接还是不接呢 ,,如果比较器正常状态输出高电平,R45 选择100K不接,这里的PMOS 。。有两个作用 一个起到导相器,另一个作用起到电路隔离作用 。。