历史上的今天
今天是:2024年09月24日(星期二)
2021年09月24日 | STM8单片机的多通道连续AD采集
2021-09-24 来源:eefocus
使用的芯片是STM8S207RBT6
ADC的初始化程序
void ADC_Init(void)
{
ADC2_DeInit();
ADC2_StartConversion(); //连续
}
得到对应通道电压
u16 Get_Adc(ADC2_Channel_TypeDef ADC2_Channel)
{
ADC2_Init(ADC2_CONVERSIONMODE_CONTINUOUS , ADC2_Channel, ADC2_PRESSEL_FCPU_D2,
ADC2_EXTTRIG_TIM, DISABLE, ADC2_ALIGN_RIGHT, ADC2_SCHMITTTRIG_ALL,DISABLE);
ADC2_Cmd(ENABLE); //启动ADC
while(ADC2_GetFlagStatus() == RESET); //等待转换结束
ADC2_ClearFlag(); //清除转换结束标志
return ADC2_GetConversionValue(); //返回ADC结果
}
u16 Read_ADC(ADC2_Channel_TypeDef ADC2_Channel)
{
u16 adc_value;
adc_value = 0;
adc_value = Get_Adc(ADC2_Channel)&0xfff;
return adc_value;
}
主函数
int main(void)
{
u16 ADCData[10];
/*设置内部高速时钟16M为主时钟*/
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
ADC_Init(); //ADC初始化
while(1)
{
ADCData[0] = Read_ADC(ADC2_CHANNEL_1); // 通道1
ADCData[1] = Read_ADC(ADC2_CHANNEL_2); // 通道2
ADCData[2] = Read_ADC(ADC2_CHANNEL_3); // 通道3
ADCData[3] = Read_ADC(ADC2_CHANNEL_4); // 通道4
ADCData[4] = Read_ADC(ADC2_CHANNEL_5); // 通道5
ADCData[5] = Read_ADC(ADC2_CHANNEL_6); // 通道6
}
}
下一篇:STM8S专题之ADC数据转换
史海拾趣
|
我做了一个220v稳压5v的东东,是用12v变压器然后接78M05稳到5v的,但是用时间长了变压器会发烫,然后功率就不够了 不会仅仅是散热不够吧,估计还有其他问题,请大牛们指教! 注:78M05输入端接的220u/16v钽电容和0.33u电容,输出端接的47u/6v钽电 ...… 查看全部问答> |
|
手上有个arm9的开发板不过没集成3g模块,不过有USB接口,是不是通过usb连接上无线网卡,就可以上网了啊? 还要做其他事情吗? 谢谢各位大侠了啊~!… 查看全部问答> |
|
我的板子现在遇到了一个问题,板子起来后,通过shell下载应用程序,有时候很快有时候特别慢!而且在shell下运行命令,有时候都会卡住,过好长时间才能出来结果!哪怕就是通过shell不停的d 内存,有时都会卡住!请问各位大侠,shell下是不是有什么要 ...… 查看全部问答> |
|
各位大侠,小妹是菜鸟级新手,初来乍到,帮帮小妹吧!!呜~~~~~~~~~~~小妹有一篇论文有个小程序需要在VXWORKS上跑,刚刚装好TORNADO2.2,请问我用VXSIM仿真器来调试分析程序,没有目标机,开发板,没有COM口的情况下如何搭建工作环境呢?就是启动VX ...… 查看全部问答> |
|
大家好:最近做了5块板子,在拷机中出现了奇怪的问题,板子功能是通过串口记录数据,带有操作系统,运行2个多小时时,很准时的,发现电流由0.25A降低到0.19A,而且板子有滴滴的声音,串口数据不能接收,activesync连接不上,多次插拔usb时串口能输 ...… 查看全部问答> |
|
看到过好多题目是给出一段有返回值的中断服务程序让找错误,答案是:中断服务程序不允许有返回值啊 中断服务程序只是由系统调用的,就不能有返回值么,是对寄存器有影响还是返回值没有意义,还是其他什么原因阿??… 查看全部问答> |
|
Timing requirements for slow timing model timing analysis were not met minimum slack time为负值,这个该怎么改?… 查看全部问答> |




