pwm触发adc是怎么触发的?有大神知道的可以讲解一下,最好长期股权投资通俗讲解点

我的ADC采样电压PWM的方波数值,可是方波上总是有小小杂波,导致数值忽大忽小,有没有简单好办法_百度知道
我的ADC采样电压PWM的方波数值,可是方波上总是有小小杂波,导致数值忽大忽小,有没有简单好办法
提问者采纳
输出结果越稳定.html" target="_blank">/view/da6ad91ec5da50e,测试次数越多。<a href="http://wenku,多测几次求平均值(比如测10次取平均值).html 要是你想图省心,二楼说的比较对.baidu。给你点参考.com/view/da6ad91ec5da50e://wenku.baidu,自己根据情况随便挑吧,当然是现在这个情况了,你直接送单片机显示AD的结果是要处理过的
提问者评价
来自团队:
其他类似问题
为您推荐:
其他2条回答
可以用低通滤波器滤波一下。
哦,什么样的低通滤波器啊?
多测几次求平均
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁lolADC改成那个样子真不知道怎么玩了,有没有大神请教一下啊,尤其是大嘴的那个W,真心没看懂_百度知道
lolADC改成那个样子真不知道怎么玩了,有没有大神请教一下啊,尤其是大嘴的那个W,真心没看懂
提问者采纳
然后在时间内A人都是按敌方最大生命值来计算。这样说明白了吧,并附加几秒钟的平A的魔法最大生命值伤害,只不过vn是第三下才能触发。然而?这点你记住魔法伤害的技能都是享受AP装备加成的就好了,为什么既然是最大生命值的伤害是魔法伤害而不是物理伤害。意思就是他的普攻距离加长,望采纳大嘴的w开启后会增加他的射程,有点类似vn的w?手机打的不容易
不是,我的意思是S6马上要改版的ADC
提问者评价
太给力了,你的回答完美的解决了我的问题!
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁查看: 10445|回复: 15
STM32定时器触发ADC怎么配置?
现在想用定时器来触发ADC转换,每隔一段时间(20ms)触发一次AD,手册上讲有很多的外部触发方式,但是除了在ADC初始化时设置一下T1_CC1作为触发源之外,我就不知道定时器的程序应该怎样设置了:
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;//T1_CC1作为AD触发源
以下是我的定时器设置,是参照网上的,实时仿真没有反应,没有看到ADC在工作。。。
void ADC_TIM1_Set(void)
&&TIM_TimeBaseInitTypeDef& &TIM_TimeBaseS
&&TIM_OCInitTypeDef& && && &TIM_OCInitS
& &//******************Time BASE configutation
& &RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
& &TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);& && &&&//初始化结构体成员的值&&
& &TIM_TimeBaseStructure.TIM_Period = 2000;& && && && && && && &//1us*2000=2ms
& &TIM_TimeBaseStructure.TIM_Prescaler = 71;& && && && && && &//72M/(71+1)=1M
& &TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;& && && &//TIM_CKD_DIV1&&
& &TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;& && && &//递增计数模式& && && &
& &TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
& &//******************TIM1_Channel1 PWM mode
& &TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;& && && && && &&&//比较输出模式为PWM1模式
& &TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_E& & //输出状态使能& && && && &
& &TIM_OCInitStructure.TIM_Pulse = 0x7F;& && && && && && && && &&&//占空比
& &TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_L& && && &//时钟空闲时为底
& &TIM_OC1Init(TIM1, &TIM_OCInitStructure);&&
& &//TIM_Cmd(TIM1, ENABLE);& & & & & & & & & & & &&&/* TIM1 counter enable */}
红色部分放在主函数里面了,代替// ADC_SoftwareStartConvCmd(ADC1, ENABLE);//ADC1转换开始,这样行吗?
除了时基配置之外,我还配置了输出模式为PWM1模式,这样行吗??
谢谢各位啦!!!
正好这两天也在你研究定时器触发adc,除了配置tim之外,还要配置adc由外部触发使能,如ADC_ExternalTrigConvCmd(ADC1,ENABLE)。
楼主可以多看看stm32的固件库手册和官方使用手册,我是用T3_TRGO触发ADC的。
void myADC_Init()
& & & & & & & & ADC_InitTypeDef ADC_InitS
& & & & & & & & GPIO_InitTypeDef GPIO_InitS
& & & & & & & & RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 ,ENABLE);
& & & & & & & & RCC_ADCCLKConfig(RCC_PCLK2_Div6);
& & & & & & & & //ADC1_Init
& & & & & & & & GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_0;
& & & & & & & & GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN;
& & & & & & & & GPIO_Init(GPIOA,&GPIO_InitStruct);
& & & & & & & &
& & & & & & & & ADC_DeInit(ADC1);
& & & & & & & & ADC_InitStruct.ADC_Mode = ADC_Mode_I
& & & & & & & & ADC_InitStruct.ADC_NbrOfChannel = 1;
& & & & & & & & ADC_InitStruct.ADC_ContinuousConvMode = DISABLE;
& & & & & & & & ADC_InitStruct.ADC_ScanConvMode = DISABLE;
& & & & & & & & ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T3_TRGO;
& & & & & & & & ADC_InitStruct.ADC_DataAlign =ADC_DataAlign_R
& & & & & & & & ADC_Init(ADC1,&ADC_InitStruct);
& & & & & & & & ADC_ExternalTrigConvCmd(ADC1,ENABLE);
& & & & & & & & //ENABLE ADC1
& & & & & & & & ADC_RegularChannelConfig(ADC1,0,1,ADC_SampleTime_1Cycles5);
& & & & & & & & ADC_DMACmd(ADC1,ENABLE);
& & & & & & & & ADC_Cmd(ADC1,ENABLE);
& & & & & & & &
& & & & & & & & ADC_ResetCalibration(ADC1);
& & & & & & & & while(ADC_GetResetCalibrationStatus(ADC1));
& & & & & & & & ADC_StartCalibration(ADC1);
& & & & & & & & while(ADC_GetCalibrationStatus(ADC1));
void TIM3_Init()
& & & & & & & & TIM_TimeBaseInitTypeDef TIM_TimeBaseInitS
& & & & & & & & NVIC_InitTypeDef NVIC_InitS
& & & & & & & & RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
& & & & & & & &
& & & & & & & & TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
& & & & & & & & TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
& & & & & & & & TIM_TimeBaseInitStruct.TIM_Period = /SampleR
& & & & & & & & TIM_TimeBaseInitStruct.TIM_Prescaler = 0;
& & & & & & & & TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStruct);
& & & & & & & &
& & & & & & & & TIM_SelectOutputTrigger(TIM3,TIM_TRGOSource_Update); //选择TRGO触发源为计时器更新时间
& & & & & & & & TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
& & & & & & & & NVIC_InitStruct.NVIC_IRQChannel = TIM3_IRQn;
& & & & & & & & NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
& & & & & & & & NVIC_InitStruct.NVIC_IRQChannelSubPriority = 3;
& & & & & & & & NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
& & & & & & & & NVIC_Init(&NVIC_InitStruct);
& & & & & & & & TIM_Cmd(TIM3,ENABLE);
niyapeace 发表于
正好这两天也在你研究定时器触发adc,除了配置tim之外,还要配置adc由外部触发使能,如ADC_ExternalTrigCon ...
TIM_SelectOutputTrigger(TIM3,TIM_TRGOSource_Update); //选择TRGO触发源为计时器更新时间
为何还要加上这一句呢?而且我不太理解您给的注释。
您这个能触发AD采样吗?我看官方给的固件库中ADC的例程——TIMTrigger_AutoInjection里面对于定时器的设置,除了时基设置外,还有一步设置,如下:
/* TIM1 channel1 configuration in PWM mode */
&&TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
&&TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_E& && && && && &
&&TIM_OCInitStructure.TIM_Pulse = 0x7F;
&&TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_L& && && &
&&TIM_OC1Init(TIM1, &TIM_OCInitStructure);
我不太理解,为什么要设置成PWM1模式的?我配置成PWM2或者其他的几种模式都能工作,您能帮我解释一下吗?谢谢啦!
另外,您的定时器只有时基设置,能够成功触发AD转换吗?我如果把上面这段删掉而只有时基设置的话,AD是不能触发的。是不是您在定时器的中断程序里面里面触发手动AD了?
额,别您啊您的==。受不起,我也是初学者,正好最近对这块有点感悟。。。。
具体看看stm32中文参考手册第156页和162页的图,adc的触发源事件是固定的,所以只要配置定时器产生特定的事件就行了,当然ADC也要配置成由外部触发的。
拿TIM1举例的话,有TIM1_CC1,TIM1_CC2,TIM1_CC3事件可以触发ADC规则组的转换,所以只需要配置TIM1产生CC事件就行了,PWM1和PWM2都能产生CC事件,CC事件是指compare & capture 比较捕获事件。
而TIM3的话就只有TRGO事件可以用来触发,因为我觉得拿TIM1配置成PWM有点浪费,就选择了TIM3的TRGO事件作为触发源了。
niyapeace 发表于
额,别您啊您的==。受不起,我也是初学者,正好最近对这块有点感悟。。。。
具体看看stm32中文参考手册第15 ...
好的,谢谢~再问几个问题吧:
多通道规则组的EOC在什么时候产生?是该组里的每个通道转换完之后都会产生EOC吗,还是该组的最后一个通道转换完之后才产生EOC?
DMA请求是在每个通道转换之后就发生的吧?
正在搞这个呢。。。还得继续啃手册
Kidult 发表于
好的,谢谢~再问几个问题吧:
多通道规则组的EOC在什么时候产生?是该组里的每个通道转换完之后都会产生 ...
这一组全部转换完成
个人感觉,这篇文章不错:
另外,可以参考ST的DEMO:TIMTrigger_AutoInjection
TIM1的CC1事件包括哪些
正好这两天也在你研究定时器触发adc,除了配置tim之外,还要配置adc由外部触发使能,如ADC_ExternalTrigCon ...
好东西!收下了!
正好这两天也在你研究定时器触发adc,除了配置tim之外,还要配置adc由外部触发使能,如ADC_ExternalTrigCon ...
请问这样子算出来的采样率是不是8k左右?
是不是main函数里面初始化这两个函数后就开始转换了?还需要其他的操作吗?
是要录音的节奏?用DMA最合适。
正好这两天也在你研究定时器触发adc,除了配置tim之外,还要配置adc由外部触发使能,如ADC_ExternalTrigCon ...
楼主 定时器3用了ADC_ExternalTrigConv_T3_TRGO&&定时器3的更新中断一定要开吗
阿莫电子论坛, 原"中国电子开发网"有一个关于单片机程序的问题,求大神解答,急急急_百度知道
有一个关于单片机程序的问题,求大神解答,急急急
70) led2=1;&#47;sbit led6=P0^5;&#47;&#47;sbit SCL=P1^2;130) led4=1; else led5=0;
value1+=0x80;sbit led7=P0^6;sbit led2=P0^1;SCL定义为P1口的第3位脚; else led1=0;160) led5=1;sbit led8=P0^7;0;&#47,value1=0;
for(i=0;sbit led3=P0^2,bit ODD){ unsigned char i=0;100) led3=1;
for(;&#47;
&#47;}&#47;i& if(h1&
&#47;220) led8=1;y&y--);DO定义为P1口的第4位脚;请先了解ADC0832模数转换的串行协议;0,0); else led8=0;reg51;i&
&#47;&#47;&#47;sbit led1=P0^0;&#47,主要是对应时序图来理解,value=0,连接ADC0832CS脚uchar h1;&#47;
DO=1; if(h1&开始从第四个下降沿接收数据
value&开始
SCL=0;&&lt,本函数是模拟0832的串行协议进行的
&#47;=1; &#47;&#47;第一个上升沿
if(value==value1)
SCL=1;180) led6=1; else led2=0; if(h1&z--)
CS=1,连接ADC0832DO脚sbit CS=P1^0; else led3=0; return 0;
delay(h1);CS定义为P1口的第4位脚;z&
h1=(255-date);&#47;与校验数据比较;
SCL=1;&#47;第三个下降沿
SCL=1; else led6=0;第三个上升沿
SCL=0;i++)
SCL=1; &#47.h&
&#47; if(h1&sbit led5=P0^4;8;
1 通道 unsigned char ad0832read(bit SGL;&#47#include&
&#47,否则返回0
200) led7=1;
DO=SGL; if(h1& delay(date); else led4=0;
for(i=0; out=0;
value++;8;
&#47;30) led1=1;
CS=0; if(h1&PWM调压{
date=ad0832read(1;
DO=ODD;}void main(){
penquan(),正确就返回数据;void delay(uint z){
&#47;接收校验数据
SCL=1;i++)
&#47; if(h1&&#47;第二个上升沿
SCL=0; if(h1& else led7=0;&#47;&#47;***********读数模转换数据********************************************************&#47;unsigned char adval,连接ADC0832SCL脚sbit DO=P1^3;=1;#define uchar unsigned char#define uint unsigned intsbit out=P3^7,再来读本函数;sbit led4=P0^3;
SCL=0;}void penquan()
这是一个音乐喷泉电路的程序,主要芯片就是ADC0832和AT89C51,有大神看得懂这段程序么?
应该是调整电位器电压
用8个LED灯来表示电压大小
其他类似问题
为您推荐:
其他1条回答
估计ADC0832是用来读取音乐声音大小的,点亮LED灯,声音越大。penquan是最后的功能函数。delay是个延时函数。ad0832read是个读ADC的函数首先初始化各个IO口,灯亮的越多。根据音乐的声音大小
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁我是一个新手,刚开始玩LOL。请教各位大神教教我怎么玩好adc_百度知道
我是一个新手,刚开始玩LOL。请教各位大神教教我怎么玩好adc
提问者采纳
一:刚玩别想着什么ADC了 先把所有英雄玩一遍了解一下英雄技能吧 了解英雄技能后你才能知道哪些英雄对ADC的威胁更大二:练补兵 开个自定义 要求不高
裸装10分钟90刀以上三:熟悉走位 尤其是团战的时候 要知道在什么地方才是安全的 乱跑的ADC基本就是死的最快的其他的再说吧
提问者评价
太给力了,你的回答完美的解决了我的问题!
来自团队:
其他类似问题
为您推荐:
其他9条回答
再开始玩匹配熟悉游戏的节奏 以及一些配合,以及特点,玩adc先练好补兵开人家 先慢慢练习 主要是先了解当前英雄的技能 属性
新手都要从熟悉英雄技能开始,召唤师技能,补刀,队友配合。。。。。。。
这个都要好好练练台多了我就不说了
adc的基本功补刀你必须会!
最重要补兵。让后技能骚扰对面补兵。 注意眼位。放到小龙哪里。预防打野抓
先猥琐不死再说,其他都以后再连
注意走位,保持输出
听了解到处
lol的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 借贷记账法通俗讲解 的文章

 

随机推荐