OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6216|回复: 4

定时器。ad转换

[复制链接]

85

主题

169

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2015-2-1
在线时间
1 小时
发表于 2015-5-19 21:45:37 | 显示全部楼层 |阅读模式
5金钱
求一个用定时器触发ad转换的程序,急,谢谢大家了

最佳答案

查看完整内容[请看2#楼]

[mw_shl_code=c,true]__IO uint16_t adc_Value[320]; void TIM3_PWM_Init(u32 arr,u32 psc) { //此部分需手动修改IO口设置 RCC->APB1ENR|=1<<1; //TIM3时钟使能 TIM3->ARR=arr; //设定计数器自动重装值 TIM3->SC=psc; //预分频器不分频 TIM3->CCMR1|=6<<4; //CH1 PWM1模式 TIM3->CCMR1|=1<<3; //CH1 预装载使能 TIM3->CCER|=1<<0; //OC ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

499

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1920
金钱
1920
注册时间
2013-11-18
在线时间
268 小时
发表于 2015-5-19 21:45:38 | 显示全部楼层
[mw_shl_code=c,true]__IO uint16_t adc_Value[320]; void TIM3_PWM_Init(u32 arr,u32 psc) { //此部分需手动修改IO口设置 RCC->APB1ENR|=1<<1; //TIM3时钟使能 TIM3->ARR=arr; //设定计数器自动重装值 TIM3->SC=psc; //预分频器不分频 TIM3->CCMR1|=6<<4; //CH1 PWM1模式 TIM3->CCMR1|=1<<3; //CH1 预装载使能 TIM3->CCER|=1<<0; //OC1 输出使能 TIM3->CCER|=1<<1; //OC1 低电平有效 TIM3->CCER|=1<<1; //OC1 低电平有效 TIM3->CCR1 =arr/2; //ARPE使能 TIM3->CR1|=1<<0; //使能定时器3 } void ADC_DMA_init(void) { RCC->AHB1ENR|=1<<22;//DMA2时钟使能 DMA2_Stream4->AR=(u32)&(ADC1->DR); //DMA外设地址 DMA2_Stream4->M0AR=(u32)adc_Value; //DMA 存储器0地址 DMA2_Stream4->NDTR=320; //DMA 存储器0地址 DMA2_Stream4->CR=0; //先全部复位CR寄存器值 DMA2_Stream4->CR|=0<<6; //存储器到外设模式 DMA2_Stream4->CR|=1<<8; //循环模式 DMA2_Stream4->CR|=0<<9; //外设非增量模式 DMA2_Stream4->CR|=1<<10; //存储器增量模式 DMA2_Stream4->CR|=1<<11; //外设数据长度:16位 DMA2_Stream4->CR|=1<<13; //存储器数据长度:16位 DMA2_Stream4->CR|=1<<16; //中等优先级 DMA2_Stream4->CR|=0<<21; //外设突发单次传输 DMA2_Stream4->CR|=0<<23; //存储器突发单次传输 DMA2_Stream4->CR|= 0x0<<25;//通道选择 DMA2_Stream4->CR|= 1<< 0;//开DMA } //初始化ADC //这里我们仅以规则通道为例 void Adc_Init(void) { //先初始化IO口 RCC->APB2ENR|=1<<8; //使能ADC1时钟 RCC->AHB1ENR|=1<<0; //使能PORTA时钟 GPIO_Set(GPIOA,PIN6,GPIO_MODE_AIN,0,0,GPIO_PUPD_PU); //PA6,模拟输入,下拉 RCC->APB2RSTR|=1<<8; //ADCs复位 RCC->APB2RSTR&=~(1<<8); //复位结束 ADC->CCR=1<<16; //ADCCLK=PCLK2/4=84/4=21Mhz,ADC时钟最好不要超过36Mhz ADC1->CR1=0; //CR1设置清零 ADC1->CR2=0; //CR2设置清零 ADC1->CR1|=0<<24; //12位模式 ADC1->CR1|=0<<8; //非扫描模式 ADC1->CR2&=~(1<<1); //单次转换模式 ADC1->CR2&=~(1<<11); //右对齐 ADC1->CR2 |= 3<<28; //硬件触发,上升沿下降沿都触发 ADC1->CR2 |=7<<24; //TIM3 通道1触发 ADC1->CR2 |= 1 << 8; //开DMA ADC1->SQR1&=~(0XF<<20); ADC1->SQR1|=0<<20; //1个转换在规则序列中 也就是只转换规则序列1 //设置通道6的采样时间 ADC1->SMPR2&=~(7<<(3*6)); //通道6采样时间清空 ADC1->SMPR2|=0<<(3*6); //通道6 480个周期,提高采样时间可以提高精确度 ADC1->SQR3|=0x6; ADC1->CR2 |= ADC_CR2_DDS; //必须置位才会一直循环采样,否则只能采样DMA设置值的次数 ADC1->CR2|=1<<0; //开启AD转换器 ADC_DMA_init(); TIM3_PWM_Init(1000,168-1); } [/mw_shl_code]

已经放下多年的FPGA,要重新再拾起来,却是如此的陌生
回复

使用道具 举报

3

主题

2164

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5757
金钱
5757
注册时间
2013-11-22
在线时间
1208 小时
发表于 2015-5-19 22:28:55 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-5-19 22:49:12 | 显示全部楼层
没,帮顶。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

85

主题

169

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2015-2-1
在线时间
1 小时
 楼主| 发表于 2015-5-20 09:24:06 | 显示全部楼层
请问有没有库函数版本的呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 15:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表