標題: AD7705源程序+兩路SPWM的stm32源程序 [打印本頁]

作者: teleboy    時間: 2018-7-7 15:16
標題: AD7705源程序+兩路SPWM的stm32源程序
ad7705+兩路SPWM,已經調試成功

單片機源程序如下:
  1. #include "delay.h"
  2. #include "key.h"
  3. #include "sys.h"
  4. #include "SPWM.h"
  5. #include "public.h"
  6. #include "printf.h"
  7. #include "adc.h"
  8. #include "systick.h"
  9. #include "spi.h"

  10. /*把這個SPWM調一下   6路,其中3路一樣,另外3路一樣,這兩組之間互補
  11. 死區(qū)300ns   載頻20K左右,可以自己定   正弦頻率50HZ   三相正弦之間相差120°   
  12. **/

  13. vu8  key = 0;                             //按鍵值       
  14. vu16 freq = 20000, Period=0;//PWM與定時器中斷頻率;自動重裝載值
  15. __IO float Period_percent; //PWM占空比變化因子,用于修改脈寬

  16. int main(void)
  17. {       
  18.         //u32 ad=0;
  19.         //u8 i;
  20.         NVIC_Configuration();
  21.         delay_init();
  22.        
  23.         //KEY_Init();         
  24.         SPIx_Init();
  25.         //Period_percent = ((SystemCoreClock / freq) - 1) / 32767.0;
  26.         //TIM1_PWM_Init(20000,0);//正弦波的頻率為20000/(399+1))50Hz)         
  27.         //輸出PWM的頻率為8KHz(一周期400個點,正弦波的頻率為8000/400=20Hz)
  28.         //TIM2_Int_Init(20000,0);
  29.     //-------------------------------------------------------------------
  30.     //adc_init();         //ADC初始化

  31.         printf_init(); //printf初始化

  32.         while(1)                               
  33.         {
  34.           //printf("adc7705");
  35.           ADC_7705();
  36.           //printf("adc7706");
  37.           delay_ms(1000);
  38.         //頻率可調程序段,觸發(fā)外部中斷按鍵調節(jié)。  步進未知,自動掃描沒有,不知程序如何執(zhí)行。
  39. //                key=KEY_Scan(0);
  40. //                if(key == 1 )
  41. //                {
  42. //                        freq += 400;                        //sin頻率 = freq/400
  43. //                        Period = (SystemCoreClock / freq) - 1; //算出自動重裝載值,Tout(溢出時間)= ((arr+1)*(psc+1))/Tclk= 1/freq;
  44. //                        TIM1->ARR = Period;
  45. //                        TIM2->ARR = Period;
  46. //                        Period_percent = Period / 32767.0;
  47. //                       
  48. //                }
  49. //                else if(key == 2)
  50. //                {
  51. //                        freq -= 400;
  52. //                        Period = (SystemCoreClock / freq) - 1;
  53.                         //TIM1->ARR = Period;
  54.                         //TIM2->ARR = Period;
  55.                         //Period_percent = Period / 32767.0;
  56. //                }
  57. //-----------------------------------------------------------------------------
  58. //-----------------------------------------------------------------------------

  59. //            ad=0;
  60. //                for(i=0;i<50;i++)//讀取50次的AD數(shù)值取其平均數(shù)較為準確       
  61. //                {
  62. //                        ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  63. //                        while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));//轉換結束標志位
  64. //                        ad=ad+ADC_GetConversionValue(ADC1);//返回最近一次ADCx規(guī)則組的轉換結果               
  65. //                }
  66. //                ad=ad/50;
  67. //                printf("電壓值為--------------------           %.3fV\n",ad*3.3/4096);
  68. //                delay_ms1(1000);       
  69.         }
  70. }
復制代碼

所有資料51hei提供下載:
5、20180531PWM+SPWM+AD7705.rar (357.22 KB, 下載次數(shù): 58)



作者: waronder    時間: 2019-9-20 15:32
好像有過了,不過還是支持!




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