標(biāo)題: stm32ADC加定時(shí)中斷采集寄存器版 [打印本頁(yè)]

作者: 田田園    時(shí)間: 2017-5-6 15:13
標(biāo)題: stm32ADC加定時(shí)中斷采集寄存器版
  1. #include "timer.h"
  2. #include "led.h"
  3. #include "adc.h"
  4. //////////////////////////////////////////////////////////////////////////////////  
  5. //本程序只供學(xué)習(xí)使用,未經(jīng)作者許可,不得用于其它任何用途
  6. //ALIENTEK Mini STM32開(kāi)發(fā)板
  7. //通用定時(shí)器 驅(qū)動(dòng)代碼      
  8. //正點(diǎn)原子@ALIENTEK
  9. //修改日期:2014/3/06
  10. //版本:V1.0
  11. //版權(quán)所有,盜版必究。
  12. //Copyright(C) 廣州市星翼電子科技有限公司 2009-2019
  13. //All rights reserved           
  14. //////////////////////////////////////////////////////////////////////////////////   

  15. //定時(shí)器3中斷服務(wù)程序  
  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時(shí)鐘            
  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);//清除中斷標(biāo)志位      
  42. }
  43. //通用定時(shí)器中斷初始化
  44. //這里時(shí)鐘選擇為APB1的2倍,而APB1為36M
  45. //arr:自動(dòng)重裝值。
  46. //psc:時(shí)鐘預(yù)分頻數(shù)
  47. //這里使用的是定時(shí)器3!
  48. void TIM3_Int_Init(u16 arr,u16 psc)
  49. {
  50. RCC->APB1ENR|=1<<1; //TIM3時(shí)鐘使能   
  51.   TIM3->ARR=arr;   //設(shè)定計(jì)數(shù)器自動(dòng)重裝值
  52. TIM3->PSC=psc;   //預(yù)分頻器設(shè)置
  53. TIM3->DIER|=1<<0;   //允許更新中斷   
  54. TIM3->CR1|=0x01;    //使能定時(shí)器3
  55.    MY_NVIC_Init(1,3,TIM3_IRQn,2);//搶占1,子優(yōu)先級(jí)3,組2         
  56. }




復(fù)制代碼





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1