找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4206|回复: 0
打印 上一主题 下一主题
收起左侧

stm32ADC加定时中断采集寄存器版

[复制链接]
跳转到指定楼层
楼主
ID:197333 发表于 2017-5-6 15:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include "timer.h"
  2. #include "led.h"
  3. #include "adc.h"
  4. //////////////////////////////////////////////////////////////////////////////////  
  5. //本程序只供学习使用,未经作者许可,不得用于其它任何用途
  6. //ALIENTEK Mini STM32开发板
  7. //通用定时器 驱动代码      
  8. //正点原子@ALIENTEK
  9. //修改日期:2014/3/06
  10. //版本:V1.0
  11. //版权所有,盗版必究。
  12. //Copyright(C) 广州市星翼电子科技有限公司 2009-2019
  13. //All rights reserved           
  14. //////////////////////////////////////////////////////////////////////////////////   

  15. //定时器3中断服务程序  
  16. #define LEDx PAout(12)
  17. extern float temp;
  18. extern int buf[];
  19. extern u16 adcx,i;
  20. void TIM3_IRQHandler(void)
  21. {  
  22.    /*
  23. RCC->APB2ENR|=1<<2;    //使能PORTA时钟            
  24. GPIOA->CRH&=0XFFFFFFF0;
  25. GPIOA->CRH|=0X00030000;//PA12 推挽输出     
  26.     GPIOA->ODR|=1<<12;      //PA12 输出高
  27. */
  28. Adc_Init();      //ADC初始化
  29. if(TIM3->SR&0X0001)//溢出中断
  30. {
  31.     LED1=!LED1;
  32.   adcx=Get_Adc(ADC_CH1);
  33.   //temp=(float)adcx*(3.3/4096);
  34.   buf[i]=adcx;
  35.   i++;
  36.   if(i==128)
  37.   {
  38.   i=0;
  39.   }
  40. }      
  41. TIM3->SR&=~(1<<0);//清除中断标志位      
  42. }
  43. //通用定时器中断初始化
  44. //这里时钟选择为APB1的2倍,而APB1为36M
  45. //arr:自动重装值。
  46. //psc:时钟预分频数
  47. //这里使用的是定时器3!
  48. void TIM3_Int_Init(u16 arr,u16 psc)
  49. {
  50. RCC->APB1ENR|=1<<1; //TIM3时钟使能   
  51.   TIM3->ARR=arr;   //设定计数器自动重装值
  52. TIM3->PSC=psc;   //预分频器设置
  53. TIM3->DIER|=1<<0;   //允许更新中断   
  54. TIM3->CR1|=0x01;    //使能定时器3
  55.    MY_NVIC_Init(1,3,TIM3_IRQn,2);//抢占1,子优先级3,组2         
  56. }




复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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