找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2966|回复: 1
收起左侧

AD7705源程序+两路SPWM的stm32源程序

[复制链接]
ID:341701 发表于 2018-7-7 15:16 | 显示全部楼层 |阅读模式
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. 死区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.         //频率可调程序段,触发外部中断按键调节。  步进未知,自动扫描没有,不知程序如何执行。
  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数值取其平均数较为准确       
  61. //                {
  62. //                        ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  63. //                        while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));//转换结束标志位
  64. //                        ad=ad+ADC_GetConversionValue(ADC1);//返回最近一次ADCx规则组的转换结果               
  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, 下载次数: 58)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:99570 发表于 2019-9-20 15:32 | 显示全部楼层
好像有过了,不过还是支持!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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