标题: stm32ADC加定时中断采集寄存器版 [打印本页]

作者: 田田园    时间: 2017-5-6 15:13
标题: stm32ADC加定时中断采集寄存器版
  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. }




复制代码





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1