久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1425|回復: 1
打印 上一主題 下一主題
收起左側

STM32 SPWM源碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:410355 發(fā)表于 2018-10-16 09:34 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
STM32 生成SPWM程序

單片機源程序如下:
  1. #include "SPWM_Out.h"


  2. uint16_t data1[253];
  3. DMA_InitTypeDef DMA_InitStructure;
  4. NVIC_InitTypeDef NVIC_InitStructure;
  5. uint16_t TimerPeriod = 0;
  6. uint16_t Channel1Pulse = 0, Channel2Pulse = 0, Channel3Pulse = 0, Channel4Pulse = 0;

  7. float data[253]={0.012516,0.02503,0.03754,0.050044,0.062541,0.075027,0.087502,0.099963,0.11241,0.12484,
  8.                                 0.13724,0.14963,0.16199,0.17433,0.18664,0.19893,0.21118,0.22339,0.23557,0.24772,0.25983,
  9.                                 0.27189,0.28392,0.29589,0.30783,0.31971,0.33154,0.34333,0.35505,0.36673,0.37834,0.3899,
  10.                                 0.40139,0.41283,0.42419,0.43549,0.44673,0.45789,0.46898,0.48,0.49094,0.50181,0.51259,
  11.                                 0.5233,0.53392,0.54446,0.55492,0.56529,0.57557,0.58576,0.59586,0.60586,0.61577,0.62558,0.6353,
  12.                                 0.64492,0.65443,0.66384,0.67315,0.68235,0.69145,0.70044,0.70932,0.71808,0.72674,0.73528,0.7437,
  13.                                 0.75201,0.7602,0.76827,0.77623,0.78406,0.79176,0.79935,0.8068,0.81414,0.82134,0.82841,0.83536,
  14.                                 0.84218,0.84886,0.85541,0.86182,0.8681,0.87425,0.88026,0.88613,0.89186,0.89745,0.9029,0.90821,
  15.                                 0.91338,0.9184,0.92328,0.92802,0.93261,0.93705,0.94135,0.9455,0.9495,0.95335,0.95705,0.96061,
  16.                                 0.96401,0.96726,0.97036,0.97331,0.97611,0.97875,0.98124,0.98358,0.98576,0.98779,0.98966,0.9913,
  17.                                 0.99294,0.99435,0.9956,0.99669,0.99763,0.99841,0.99904,0.99951,0.99982,0.99998,0.99998,0.99982,
  18.                                 0.99951,0.99904,0.99841,0.99763,0.99669,0.9956,0.99435,0.99294,0.99138,0.98966,0.98779,0.98576,
  19.                                 0.98358,0.98124,0.97875,0.97611,0.97331,0.97036,0.96726,0.96401,0.96061,0.95705,0.95335,0.9495,
  20.                                 0.9455,0.94135,0.93705,0.93261,0.92802,0.92328,0.9184,0.91338,0.90821,0.9029,0.89745,0.89186,
  21.                                 0.88613,0.88026,0.87425,0.8681,0.86182,0.85541,0.84886,0.84218,0.83536,0.82841,0.82134,0.81414,
  22.                                 0.8068,0.79935,0.79176,0.78406,0.77623,0.76827,0.7602,0.75201,0.7437,0.73528,0.72674,0.71808,
  23.                                 0.70932,0.70044,0.69145,0.68235,0.67315,0.66384,0.65443,0.64492,0.6353,0.62558,0.61577,0.60586,
  24.                                 0.59586,0.58576,0.57557,0.56529,0.55492,0.54446,0.53392,0.5233,0.51259,0.50181,0.49094,0.48,
  25.                                 0.46898,0.45789,0.44673,0.43549,0.42419,0.41283,0.40139,0.3899,0.37834,0.36673,0.35505,0.34333,
  26.                                 0.33154,0.31971,0.30783,0.29589,0.28392,0.27189,0.25983,0.24772,0.23557,0.22339,0.21118,0.19893,
  27.                                 0.18664,0.17433,0.16199,0.14963,0.13724,0.12484,0.11241,0.099963,0.087502,0.075027,0.062541,0.050044,
  28.                                 0.03754,0.02503,0.012516};
  29. //float data[315] = {0.00000,0.01000,0.02000,0.03000,0.03999,0.04998,0.05996,0.06994,0.07991,0.08988,0.09983,0.10978,0.11971,
  30. //                                   0.12963,0.13954,0.14944,0.15932,0.16918,0.17903,0.18886,0.19867,0.20846,0.21823,0.22798,0.23770,0.24740,
  31. //                                   0.25708,0.26673,0.27636,0.28595,0.29552,0.30506,0.31457,0.32404,0.33349,0.34290,0.35227,0.36162,0.37092,
  32. //                                   0.38019,0.38942,0.39861,0.40776,0.41687,0.42594,0.43497,0.44395,0.45289,0.46178,0.47063,0.47943,0.48818,
  33. //                                   0.49688,0.50553,0.51414,0.52269,0.53119,0.53963,0.54802,0.55636,0.56464,0.57287,0.58104,0.58914,0.59720,
  34. //                                   0.60519,0.61312,0.62099,0.62879,0.63654,0.64422,0.65183,0.65938,0.66687,0.67429,0.68164,0.68892,0.69614,
  35. //                                   0.70328,0.71035,0.71736,0.72429,0.73115,0.73793,0.74464,0.75128,0.75784,0.76433,0.77074,0.77707,0.78333,
  36. //                                   0.78950,0.79560,0.80162,0.80756,0.81342,0.81919,0.82489,0.83050,0.83603,0.84147,0.84683,0.85211,0.85730,
  37. //                                   0.86240,0.86742,0.87236,0.87720,0.88196,0.88663,0.89121,0.89570,0.90010,0.90441,0.90863,0.91276,0.91680,
  38. //                                   0.92075,0.92461,0.92837,0.93204,0.93562,0.93910,0.94249,0.94578,0.94898,0.95209,0.95510,0.95802,0.96084,
  39. //                                   0.96356,0.96618,0.96872,0.97115,0.97348,0.97572,0.97786,0.97991,0.98185,0.98370,0.98545,0.98710,0.98865,
  40. //                                   0.99010,0.99146,0.99271,0.99387,0.99492,0.99588,0.99674,0.99749,0.99815,0.99871,0.99917,0.99953,0.99978,
  41. //                                   0.99994,1.00000,0.99996,0.99982,0.99957,0.99923,0.99879,0.99825,0.99761,0.99687,0.99602,0.99508,0.99404,
  42. //                                   0.99290,0.99166,0.99033,0.98889,0.98735,0.98572,0.98399,0.98215,0.98022,0.97820,0.97607,0.97385,0.97153,
  43. //                                   0.96911,0.96659,0.96398,0.96128,0.95847,0.95557,0.95258,0.94949,0.94630,0.94302,0.93965,0.93618,0.93262,
  44. //                                   0.92896,0.92521,0.92137,0.91744,0.91341,0.90930,0.90509,0.90079,0.89641,0.89193,0.88736,0.88271,0.87796,
  45. //                                   0.87313,0.86821,0.86321,0.85812,0.85294,0.84768,0.84233,0.83690,0.83138,0.82578,0.82010,0.81434,0.80850,
  46. //                                   0.80257,0.79657,0.79048,0.78432,0.77807,0.77175,0.76535,0.75888,0.75233,0.74571,0.73901,0.73223,0.72538,
  47. //                                   0.71846,0.71147,0.70441,0.69728,0.69007,0.68280,0.67546,0.66806,0.66058,0.65304,0.64543,0.63776,0.63003,
  48. //                                   0.62223,0.61437,0.60645,0.59847,0.59043,0.58233,0.57417,0.56596,0.55768,0.54936,0.54097,0.53253,0.52404,
  49. //                                   0.51550,0.50691,0.49826,0.48957,0.48082,0.47203,0.46319,0.45431,0.44537,0.43640,0.42738,0.41832,0.40921,
  50. //                                   0.40007,0.39088,0.38166,0.37240,0.36310,0.35376,0.34439,0.33499,0.32555,0.31608,0.30657,0.29704,0.28748,
  51. //                                   0.27789,0.26827,0.25862,0.24895,0.23925,0.22953,0.21978,0.21002,0.20023,0.19042,0.18060,0.17075,0.16089,
  52. //                                   0.15101,0.14112,0.13121,0.12129,0.11136,0.10142,0.09146,0.08150,0.07153,0.06155,0.05157,0.04158,0.03159,
  53. //                                   0.02159,0.01159,0.00159};

  54. void RCC_Configuration(void)
  55. {
  56.   /* TIM1, GPIOA, GPIOB, GPIOE and AFIO clocks enable */
  57.   SystemInit();
  58.   //RCC_ADCCLKConfig(RCC_PCLK2_Div2);
  59.   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
  60.   RCC_APB2PeriphClockCmd( RCC_APB2Periph_TIM1|RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC , ENABLE);
  61.   //RCC_APB1PeriphClockCmd( , ENABLE);
  62. }

  63. /**
  64.   * @brief  Configure the TIM 1 Pins.
  65.   * @param  None
  66.   * @retval None
  67.   */
  68. void GPIO_Configuration(void)
  69. {
  70.   GPIO_InitTypeDef GPIO_InitStructure;

  71.   /* GPIOA Configuration: Channel 1, 2 and 3 as alternate function push-pull */
  72.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
  73.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  74.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  75.   GPIO_Init(GPIOB, &GPIO_InitStructure);
  76.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
  77.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  78.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  79.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  80. }

  81. void DMA_Configuration(void)
  82. {
  83. /* DMA1 channel1 configuration ----------------------------------------------*/
  84.   DMA_DeInit(DMA1_Channel5);                          //將DMA的通道5寄存器重設為缺省值
  85.   //DMA_DeInit(DMA1_Channel2);
  86.   DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)TIM1_CCR1_Address;   //定義DMA外設基地址           
  87.   DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&data1;                                        //定義DMA內存基地址
  88.   DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;                                            //外設作為數據傳輸的目的地
  89.   DMA_InitStructure.DMA_BufferSize = 253;                                                                        //定義指定DMA通道的DMA緩存大小
  90.   DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;                        //外設地址寄存器不變
  91.   DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;                                        //內存地址寄存器遞增
  92.   DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;//數據寬度為16位
  93.   DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;                //數據寬度為16位
  94.   DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;                                                        //工作在循環(huán)緩存模式
  95.   DMA_InitStructure.DMA_Priority = DMA_Priority_High;                                                //高優(yōu)先級
  96.   DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;                                                                //不設置內存到內存的傳輸
  97.   DMA_Init(DMA1_Channel5, &DMA_InitStructure);
  98.   
  99.   /* Enable DMA1 channel1 */
  100.   DMA_Cmd(DMA1_Channel5, ENABLE);
  101. }

  102. void TIM_Configuration(void)
  103. {
  104.   TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  105.   TIM_OCInitTypeDef TIM_OCInitStructure;
  106.   TIM_BDTRInitTypeDef TIM1_BDTRInitStructure;
  107.   /*
  108.    TIM1CLK = SystemCoreClock, Prescaler = 0, TIM1 counter clock = SystemCoreClock
  109.    SystemCoreClock is set to 72 MHz for Low-density, Medium-density, High-density
  110.    and Connectivity line devices and to 24 MHz for Low-Density Value line and
  111.    Medium-Density Value line devices
  112.    The Timer pulse is calculated as follows:
  113.      - ChannelxPulse = DutyCycle * (TIM1_Period - 1) / 100
  114.   ----------------------------------------------------------------------- */
  115.   TimerPeriod = 8000-1;           //5600-1;//  (SystemCoreClock / 2400 ) - 1;



  116.   /* Compute CCR1 value to generate a duty cycle at 50% for channel 1 and 1N */
  117.   Channel1Pulse = (uint16_t) (((uint32_t) 5 * (TimerPeriod - 1)) / 10);         
  118.   /* Compute CCR2 value to generate a duty cycle at 37.5%  for channel 2 and 2N */
  119.   Channel2Pulse = (uint16_t) (((uint32_t) 375 * (TimerPeriod - 1)) / 1000);        
  120.   
  121.   TIM_TimeBaseStructure.TIM_Prescaler = 0;
  122.   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  123.   TIM_TimeBaseStructure.TIM_Period = TimerPeriod;
  124.   TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  125.   TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
  126.   TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
  127.   
  128.   TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE);
  129.   
  130.   /*TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
  131.   TIM_DMACmd(TIM2, TIM_DMA_Update, ENABLE);*/
  132.   
  133.   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
  134.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  135.   TIM_OCInitStructure.TIM_OutputNState =TIM_OutputNState_Enable;
  136.   TIM_OCInitStructure.TIM_Pulse = Channel1Pulse;
  137.   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
  138.   TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low;
  139.   TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
  140.   TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;
  141.   TIM_OC1Init(TIM1, &TIM_OCInitStructure);
  142.   
  143.   TIM1_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Enable;
  144.   TIM1_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable;
  145.   TIM1_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_1;
  146.   TIM1_BDTRInitStructure.TIM_DeadTime = 0x0f;//0x1f;
  147.   TIM1_BDTRInitStructure.TIM_Break = TIM_Break_Disable;
  148.   TIM1_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_Low;
  149.   TIM1_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;
  150.   TIM_BDTRConfig(TIM1,&TIM1_BDTRInitStructure);
  151.   
  152.   TIM_Cmd(TIM1, ENABLE);
  153.   
  154.   TIM_CtrlPWMOutputs(TIM1, ENABLE);
  155. }

  156. void SPWM_Config()
  157. {
  158.         u8 i;

  159.         for(i=0;i<253;i++)
  160.    {
  161.                 data1[i]= (uint16_t)(data[i]*(TimerPeriod - 1));
  162.    }
  163. }
復制代碼

所有資料51hei提供下載:
SPWM.rar (274.21 KB, 下載次數: 44)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:99570 發(fā)表于 2019-9-20 15:09 | 只看該作者
不錯,學習一下,謝謝分享!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 播放一级黄色片 | av黄色免费 | 人人鲁人人莫人人爱精品 | 99福利视频 | 亚洲精品第一 | 中文字幕在线二区 | 亚洲精品久久久久久首妖 | 欧美jizzhd精品欧美巨大免费 | 欧美一级毛片在线播放 | 日韩中文在线视频 | 狠狠操电影 | 午夜电影合集 | 日本视频在线播放 | 久久久国产一区二区三区 | 国产精品高潮呻吟久久aⅴ码 | 欧美一级黄色片 | 狠狠干美女 | 国产精品欧美日韩 | 黄色网络在线观看 | 欧美日韩精品久久久免费观看 | 国产成人免费视频网站高清观看视频 | 在线免费观看毛片 | 激情五月综合网 | 欧美日本在线 | 亚洲精品一区在线 | 亚洲 中文 欧美 日韩 在线观看 | 精久久久 | 一区二区三区亚洲 | 亚洲国产成人精品久久久国产成人一区 | 中文字幕第100页 | 在线观看免费观看在线91 | 永久网站| 青青草社区 | 精品国产一区二区 | 久久爱黑人激情av摘花 | 欧美亚洲国产一区 | 日本成人在线免费视频 | 妞干网av | 国产精品96久久久久久 | 人人爱干 | 欧美日韩在线看 |