使用STM8S105K4T6C 模数转换器的12通道
来源:互联网 发布:手机淘宝旺铺首页装修 编辑:程序博客网 时间:2024/06/03 12:01
今天真呀真高兴! 中了个TIMESS小闹钟,感谢论坛!
分享今天遇到的一个stm8s模数转换的小问题~~~
这款单片机一共提供了7个模数转换通道,他们分别是AIN0-AIN5和AIN12。
stm8s105k4t6c的管脚图
其中AIN0-AIN5的配置和使用方法如下,配置为连续转换、扫描模式(代码写的不好,大神请见谅~):[mw_shl_code=c,true]/*---------------------------------包含头文件---------------------------------*/#include "adc.h"#define ADC 60 //滤波深度,不宜过高,防止越界 u16/*---------------------------------全局标志位---------------------------------*//*----------------------------------函数定义----------------------------------*///*----------------ADC1端口初始化函数---------------*/static void Adc_Gpio_Init(void) //使用第12通道{ GPIO_Init(GPIOF, GPIO_PIN_4, GPIO_MODE_IN_FL_NO_IT);}/*------------------ADC1初始化函数-----------------*/void Adc1_Init(void){ Adc_Gpio_Init(); ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, //连续转换 (ADC1_Channel_TypeDef)(ADC1_CHANNEL_12), //开启12通道 ADC1_PRESSEL_FCPU_D2, //2分频 ADC1_EXTTRIG_TIM, DISABLE, //关闭外部触发 ADC1_ALIGN_RIGHT, //右对齐 (ADC1_SchmittTrigg_TypeDef)(ADC1_SCHMITTTRIG_CHANNEL12), DISABLE); //关闭施密特触发器 ADC1_Cmd(ENABLE); //使能ADC1 ADC1_DataBufferCmd(ENABLE); //开启缓存 ADC1_ScanModeCmd(ENABLE); //启用扫描模式 ADC1_StartConversion(); //开始转换}/*-------------------ADC获取AD值------------------*/uint16_t Get_Adc1_Value(ADC1_Channel_TypeDef channel) {uint8_t t;uint16_t data = 0;for(t=0;t<ADC;t++){ data+=ADC1_GetBufferValue(channel);} return (uint16_t)(data/ADC); //返回转换平均值}/*--------------Write-by-xiao-kai\2017\05\06\17\14----QQ-850637704------------*//*-------------------------Always have a nice day-----------------------------*/[/mw_shl_code]
当我们想使用AIN12的时候,如果使用上面的代码就不能正确使用这个通道了。为什么呢? 看下图
stm8s105k4t6c ADC1简介
注意大红框中的NOTE:大概的意思是说:额外的AIN12通道不能用于ADC扫描模式和模拟看门狗模式,而且AIN12通道转换结果只会存在 ADC_DRH/ADC_DRL这两个寄存器中!
既然是这样:那我们应该去stm8s的固件库中去寻找可以操作AIN12的函数咯,要注意库寄存器的风格,查找的格式应该是“ADC1->DRL”或"ADC1->DRH",就会找到uint16_t ADC1_GetConversionValue(void),
而且就只有这个函数使用到了这两个寄存器,就是它了!!!
然后把上面操作AIN0-AIN5的初始化函数注释掉ADC1_ScanModeCmd(ENABLE); //启用扫描模式,调用ADC1_GetConversionValue()就可以了,STM8S好用没毛病!!!
阅读全文
0 0
- 使用STM8S105K4T6C 模数转换器的12通道
- 数模、模数转换器
- 图像的通道数问题
- 高速模数转换器(ADC)的INL/DNL测量
- 基于0808模/数转换器的电压测试仿真
- 理解模数转换器的噪声、ENOB和有效分辨率
- ConvertUtils转换器的使用
- JSF转换器的使用
- ps通道的使用
- DMA通道的使用
- Strut中转换器的使用
- Strut中转换器的使用
- wpf 的值转换器使用
- webwork 类型转换器的使用
- PDF转换器的使用步骤
- Struts2_Converter(转换器的使用)_Demo
- spring MVC 转换器的使用
- 什么是ADC(模数转换器)
- 无限轮播图的布局和小圆点的实现
- 用Golang处理每分钟百万级请求
- 网络编程相关文章
- 五种开源协议比较(转)
- 下载 Project Server 2016
- 使用STM8S105K4T6C 模数转换器的12通道
- iOS 动画基础总结篇
- RecyclerView添加点击事件
- Visual Studio Code高效开发----自动保存设置方法
- Java 关于获取webapp路径问题
- HDFS 常用Shell命令
- ZooKeeper运维之数据文件和事务日志
- jQuery 上拉下拉动画
- Bomb支付----流水过