ad7705+两路SPWM,已经调试成功
单片机源程序如下:
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "SPWM.h"
- #include "public.h"
- #include "printf.h"
- #include "adc.h"
- #include "systick.h"
- #include "spi.h"
- /*把这个SPWM调一下 6路,其中3路一样,另外3路一样,这两组之间互补
- 死区300ns 载频20K左右,可以自己定 正弦频率50HZ 三相正弦之间相差120°
- **/
- vu8 key = 0; //按键值
- vu16 freq = 20000, Period=0;//PWM与定时器中断频率;自动重装载值
- __IO float Period_percent; //PWM占空比变化因子,用于修改脉宽
- int main(void)
- {
- //u32 ad=0;
- //u8 i;
- NVIC_Configuration();
- delay_init();
-
- //KEY_Init();
- SPIx_Init();
- //Period_percent = ((SystemCoreClock / freq) - 1) / 32767.0;
- //TIM1_PWM_Init(20000,0);//正弦波的频率为20000/(399+1))50Hz)
- //输出PWM的频率为8KHz(一周期400个点,正弦波的频率为8000/400=20Hz)
- //TIM2_Int_Init(20000,0);
- //-------------------------------------------------------------------
- //adc_init(); //ADC初始化
- printf_init(); //printf初始化
- while(1)
- {
- //printf("adc7705");
- ADC_7705();
- //printf("adc7706");
- delay_ms(1000);
- //频率可调程序段,触发外部中断按键调节。 步进未知,自动扫描没有,不知程序如何执行。
- // key=KEY_Scan(0);
- // if(key == 1 )
- // {
- // freq += 400; //sin频率 = freq/400
- // Period = (SystemCoreClock / freq) - 1; //算出自动重装载值,Tout(溢出时间)= ((arr+1)*(psc+1))/Tclk= 1/freq;
- // TIM1->ARR = Period;
- // TIM2->ARR = Period;
- // Period_percent = Period / 32767.0;
- //
- // }
- // else if(key == 2)
- // {
- // freq -= 400;
- // Period = (SystemCoreClock / freq) - 1;
- //TIM1->ARR = Period;
- //TIM2->ARR = Period;
- //Period_percent = Period / 32767.0;
- // }
- //-----------------------------------------------------------------------------
- //-----------------------------------------------------------------------------
- // ad=0;
- // for(i=0;i<50;i++)//读取50次的AD数值取其平均数较为准确
- // {
- // ADC_SoftwareStartConvCmd(ADC1, ENABLE);
- // while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));//转换结束标志位
- // ad=ad+ADC_GetConversionValue(ADC1);//返回最近一次ADCx规则组的转换结果
- // }
- // ad=ad/50;
- // printf("电压值为-------------------- %.3fV\n",ad*3.3/4096);
- // delay_ms1(1000);
- }
- }
复制代码
所有资料51hei提供下载:
5、20180531PWM+SPWM+AD7705.rar
(357.22 KB, 下载次数: 58)
|