/* -------------------------------------------------------------------------- */ /* ROUTINE NAME: ADC_Init */ /* INPUT/OUTPUT: None. */ /* DESCRIPTION: Initialize the AD converter. */ /* -------------------------------------------------------------------------- */ void ADC_Init(void) { ADC_CR2 = 0x00; ADC_CR1 = 0x00; ADC_CSR = 0x03; ADC_TDRL = 0x20; } 以上是ST官方套件板上的AD初始化的例程,ADC_CR2,ADC_CR1,ADC_CSR 这三个好理解,ADC_TDRL是ADC施密特触发器禁止寄存器低位,置位是为降低IO静态功耗,如果是这样,目前用到的是AIN3,为什么例程里只关闭了AIN5口的施密特触发,处于功耗考虑的话,实际功能上的话不关闭应该也是不影响的吧? |
测试标签123
IAR FOR ARM和IAR FOR STM8无法共存,
STM8L052,液晶内部电源怎么用?
STM8S103飞线外接芯片,I2C不能得到slaveAddress应答,通讯失败。
STM8S105C6T6 UART2串口,能接收数据,不能发送数据
STM8S105K4 串口2 无奇偶校验,也能接收 偶校验的 数据
在STM8S的IAP使用中断和APP使用中断问题
STM8L151 SMBUS设计
STM8S103F复位异常
STM8L的LCD调试时不亮
首先,你要正确理解单片机IO口的结构,具体框图可见参考手册。
其次,你要正确理解施密特触发器在IO口中的作用,与普通的门电路不同,施密特触发器有两个阈值电压,分别称为正向阈值电压和负向阈值电压。在输入信号从低电平上升到高电平的过程中使电路状态发生变化的输入电压称为正向阈值电压,在输入信号从高电平下降到低电平的过程中使电路状态发生变化的输入电压称为负向阈值电压。他是作为数字输入时滤波用的。
最后,既然施密特触发器只作为数字输入时的滤波,那么在模拟输入时他就没什么作用了,为了你的采样更准确,那就把他关闭吧。至于关哪个,哪个用做模拟输入口,那就关哪个。
IO口结构框图
多谢讲的这么细,学到不少。软件之前接触少,都只负责电路板这块。电路上用的是AIN3,如果按照这样的话AIN3应该关掉,但是官方例程里关了AIN5,所以我一直弄不明白他的程序这样到时是为什么,处于什么原因关闭AIN5。
用的是STM8S105S4K6,定义上串口和AD脚没有复用,所以应该不是因为通信
你要根据自己的实际情况来写,明白吗?官方例程里可能用的模拟输入就是AIN5