在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于GD32驅動BLDC電機(1)定時器和PWM

冬至子 ? 來源:極術社區 ? 作者:電子爛人 ? 2023-12-13 15:20 ? 次閱讀

心血來潮買了幾個BLDC電機,準備這次就使用蘋果派這塊板子試一下BLDC電機的控制。

蘋果派這塊板子的書籍和例程很多,要驅動電機首先要配置定時器,產生可控的PWM脈沖。

趁快遞還沒到,先學習一下PWM的生成方式:

按照例程和書籍配置寄存器TIMER2:

static  void ConfigTimer2(unsigned short arr, unsigned short psc)
{
  timer_parameter_struct timer_initpara;               //timer_initpara用于存放定時器的參數

  //使能RCU相關時鐘 
  rcu_periph_clock_enable(RCU_TIMER2);                 //使能TIMER2的時鐘

  timer_deinit(TIMER2);                                //設置TIMER2參數恢復默認值
  timer_struct_para_init(&timer_initpara);             //初始化timer_initpara

  //配置TIMER2
  timer_initpara.prescaler         = psc;              //設置預分頻器值
  timer_initpara.counterdirection  = TIMER_COUNTER_UP; //設置向上計數模式
  timer_initpara.period            = arr;              //設置自動重裝載值
  timer_initpara.clockdivision     = TIMER_CKDIV_DIV1; //設置時鐘分割
  timer_init(TIMER2, &timer_initpara);                 //根據參數初始化定時器

  timer_interrupt_enable(TIMER2, TIMER_INT_UP);        //使能定時器的更新中斷
  nvic_irq_enable(TIMER2_IRQn, 1, 0);                  //配置NVIC設置優先級
  timer_enable(TIMER2);                                //使能定時器
}

配置PWM輸出模式:

static void ConfigTIMER1ForPWMPB10(unsigned short arr, unsigned short psc)
{
  //定義初始化結構體變量
  timer_oc_parameter_struct timer_ocinitpara;
  timer_parameter_struct timer_initpara;
  
  rcu_periph_clock_enable(RCU_GPIOB);    //使能GPIOB時鐘
  rcu_periph_clock_enable(RCU_TIMER1);   //使能TIMER1時鐘
  rcu_periph_clock_enable(RCU_AF);       //使能TIMER1時鐘
  
  gpio_pin_remap_config(GPIO_TIMER1_PARTIAL_REMAP1, ENABLE);  //TIMER1部分重映射TIMER1_CH2- >PB10
  gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_10);  //設置GPIO輸出模式及速度

  timer_deinit(TIMER1);                                  //將TIMER1配置為默認值
  timer_struct_para_init(&timer_initpara);               //timer_initpara配置為默認值
    
  timer_initpara.prescaler         = psc;                //設置預分頻值
  timer_initpara.alignedmode       = TIMER_COUNTER_EDGE; //設置對齊模式
  timer_initpara.counterdirection  = TIMER_COUNTER_UP;   //設置向上計數
  timer_initpara.period            = arr;                //設置重裝載值
  timer_initpara.clockdivision     = TIMER_CKDIV_DIV1;   //設置時鐘分頻因子
  timer_initpara.repetitioncounter = 0;                  //設置重復計數值
  timer_init(TIMER1, &timer_initpara);                   //初始化定時器
    
  //將結構體參數初始化為默認值
  timer_channel_output_struct_para_init(&timer_ocinitpara);  
    
  timer_ocinitpara.outputstate  = TIMER_CCX_ENABLE;                    //設置通道輸出狀態
  timer_ocinitpara.outputnstate = TIMER_CCXN_DISABLE;                  //設置互補通道輸出狀態
  timer_ocinitpara.ocpolarity   = TIMER_OC_POLARITY_HIGH;              //設置通道輸出極性
  timer_ocinitpara.ocnpolarity  = TIMER_OCN_POLARITY_HIGH;             //設置互補通道輸出極性
  timer_ocinitpara.ocidlestate  = TIMER_OC_IDLE_STATE_LOW;             //設置空閑狀態下通道輸出極性
  timer_ocinitpara.ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;            //設置空閑狀態下互補通道輸出極性
  timer_channel_output_config(TIMER1, TIMER_CH_2, &timer_ocinitpara);  //初始化結構體
     
  timer_channel_output_pulse_value_config(TIMER1, TIMER_CH_2, 0);                   //設置占空比
  timer_channel_output_mode_config(TIMER1, TIMER_CH_2, TIMER_OC_MODE_PWM0);         //設置通道比較模式
  timer_channel_output_shadow_config(TIMER1, TIMER_CH_2, TIMER_OC_SHADOW_DISABLE);  //失能比較影子寄存器
  timer_auto_reload_shadow_enable(TIMER1);                                          //自動重載影子使能 

  timer_enable(TIMER1);  //使能定時器
}

void  InitPWM(void)
{
  ConfigTIMER1ForPWMPB10(599, 999);  //配置TIMER1,120000000/(999+1)/(599+1)=200Hz
}

void SetPWM(signed short val)
{
  s_iDutyCycle = val;                   //獲取占空比的值
  
  timer_channel_output_pulse_value_config(TIMER1, TIMER_CH_2, s_iDutyCycle);  //設置占空比
}

設置主函數:

#include "Main.h"
#include "gd32f30x_conf.h"
#include "SysTick.h"
#include "RCU.h"
#include "NVIC.h"
#include "Timer.h"
#include "PWM.h"

int main(void)
{
  SystemInit();      
  InitRCU();          
  InitNVIC();           
  InitTimer();         
  InitSysTick();       
  InitPWM();          
  
  SetPWM(100);
  
  while(1)
  {  
     
  }
}

KEIL中編寫好代碼后,連接板子上的GD-LINK接口
由于使用GDlink燒錄,故在"Target"標簽頁選擇"DEBUG"為“CMSIS-DAP Debugger”
經實測GDLINK的燒錄速度較慢,這里可以把時鐘頻率調整為10MHZ以增快燒錄速度

image.png
1702377055707.png

燒錄完成后用示波器的探頭連接PB10引腳,如圖,可以看到清晰的PWM波型

微信圖片_20231212183455.jpg

有了PWM之后,控制電機就顯得極其簡單了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • PWM
    PWM
    +關注

    關注

    114

    文章

    5198

    瀏覽量

    214901
  • 定時器
    +關注

    關注

    23

    文章

    3255

    瀏覽量

    115388
  • FreeRTOS
    +關注

    關注

    12

    文章

    484

    瀏覽量

    62399
  • BLDC電機
    +關注

    關注

    7

    文章

    214

    瀏覽量

    21613
  • gd32f303
    +關注

    關注

    4

    文章

    38

    瀏覽量

    3719
收藏 人收藏

    評論

    相關推薦

    基于GD32 MCU的電機驅動方案詳解

    兆易創新 GD32 MCU 在電機驅動應用上,經過多年技術沉淀,在無刷電機和步進電機的應用中,形成自身完整可靠的解決方案,愿能為用戶提供更多
    發表于 07-03 16:43 ?7641次閱讀

    電機控制基礎知識1定時器基礎知識與PWM輸出原理

    單片機開發中,電機的控制與定時器有著密不可分的關系,無論是直流電機,步進電機還是舵機,都會用到定時器,比如最常用的有刷直流
    的頭像 發表于 06-17 00:11 ?1.2w次閱讀
    <b class='flag-5'>電機</b>控制基礎知識<b class='flag-5'>1</b>—<b class='flag-5'>定時器</b>基礎知識與<b class='flag-5'>PWM</b>輸出原理

    GD32對Timer定時器原理的詳細講解

    GD32 Timr定時器看起來比較復雜啊。一看GD32E10x 的SPEC:一個高級定時器,三個通用定時器,還有一個基本
    的頭像 發表于 04-22 17:02 ?1.7w次閱讀
    <b class='flag-5'>GD32</b>對Timer<b class='flag-5'>定時器</b>原理的詳細講解

    STM32F103定時器PWM驅動步進電機加減速

    之前學習了定時器的一些基本知識,實現了1ms的定時,本次學習定時器PWM功能,用定時器產生的
    的頭像 發表于 02-28 14:25 ?6.9w次閱讀
    STM32F103<b class='flag-5'>定時器</b><b class='flag-5'>PWM</b><b class='flag-5'>驅動</b>步進<b class='flag-5'>電機</b>加減速

    GD32開發實戰指南(基礎篇) 第7章 定時器

    系統滴答定時器一般用來提供“心跳”作用,而GD32定時器最基本功能也是定時,可以設置不同時間長度的定時
    的頭像 發表于 05-11 09:00 ?1.2w次閱讀
    <b class='flag-5'>GD32</b>開發實戰指南(基礎篇) 第7章 <b class='flag-5'>定時器</b>

    GD32開發實戰指南(基礎篇) 第8章 定時器

    Modulation” 的縮寫,簡稱脈寬調制,是利用微處理的數字輸出來對模擬電路進行控制的一種非常有效的技術。簡單一點,就是對脈沖寬度的控制。 GD32定時器除了 TIMER5 和 6(基本
    的頭像 發表于 05-12 22:14 ?8083次閱讀
    <b class='flag-5'>GD32</b>開發實戰指南(基礎篇) 第8章 <b class='flag-5'>定時器</b>

    GD32E230C8T6高級定時器timer0無法正常輸出PWM波形的原因?

    原本想用高級定時器的中央對齊計數模式來輸出SPWM波,但是TIMER0的CH0,CH1等口,都無法正常輸出PWM波形,換成普通定時器就可以了,STM32里對于高級
    發表于 07-26 06:34

    GD電機驅動底層配置—永磁同步電機控制

    ,可使GD32F310系列廣泛應用于永磁同步電機控制領域。本文將介紹應用于電機控制時,高級定時器和ADC的配置過程。  底層驅動配置  
    發表于 10-13 14:29

    GD32-Colibri-F207實驗板定時器1停止

    GD32-Colibri-F207實驗板定時器1停止,很好的GD32資料,快來學習吧。
    發表于 04-21 14:24 ?11次下載

    電機控制基礎——定時器基礎知識與PWM輸出原理

    單片機開發中,電機的控制與定時器有著密不可分的關系,無論是直流電機,步進電機還是舵機,都會用到定時器,比如最常用的有刷直流
    發表于 11-30 14:21 ?38次下載
    <b class='flag-5'>電機</b>控制基礎——<b class='flag-5'>定時器</b>基礎知識與<b class='flag-5'>PWM</b>輸出原理

    普通定時器輸出互補PWM帶死區

    無刷電機。這下就需要用到互補PWM了。然后選型的單片機只有一路高級定時器tim1,另外一個電機PWM
    發表于 12-16 16:59 ?24次下載
    普通<b class='flag-5'>定時器</b>輸出互補<b class='flag-5'>PWM</b>帶死區

    GD32F303固件庫開發(13)----定時器TIM捕獲PWM測量頻率與占空比

    本章配置GD32F303輸出PWM,同時使用TIM測量PWM頻率和正占空比。 查閱手冊可以得知,PB11為定時器1的通道3,讓其輸出
    的頭像 發表于 12-07 10:19 ?6263次閱讀
    <b class='flag-5'>GD</b>32F303固件庫開發(13)----<b class='flag-5'>定時器</b>TIM捕獲<b class='flag-5'>PWM</b>測量頻率與占空比

    GD32103系列電機驅動項目總結

    這次使用的GD系列的芯片來做電機驅動。然后對使用GD芯片做個總結。這次做的是一個光伏機器人項目。主要用在光伏板上的機器人,通過驅動
    發表于 03-17 16:21 ?0次下載
    <b class='flag-5'>GD</b>32103系列<b class='flag-5'>電機</b><b class='flag-5'>驅動</b>項目總結

    利用通用定時器輸出PWM(附示例驅動直流電機)

    上一節講述了時鐘樹和基本定時器的配置方法,本節先介紹通用定時器和基本定時器的差異,然后粗略講述PWM波原理,然后講述如何配置通用定時器,最后
    發表于 04-03 14:56 ?0次下載
    利用通用<b class='flag-5'>定時器</b>輸出<b class='flag-5'>PWM</b>(附示例<b class='flag-5'>驅動</b>直流<b class='flag-5'>電機</b>)

    GD32 Timer定時器周期時間計算公式

    有小伙伴反饋GD32 Timer定時器的周期時間不知如何計算,今天就來安排。
    的頭像 發表于 01-22 09:53 ?2907次閱讀
    <b class='flag-5'>GD32</b> Timer<b class='flag-5'>定時器</b>周期時間計算公式
    主站蜘蛛池模板: 色婷婷六月桃花综合影院 | 国产男人搡女人免费视频 | 日韩精品另类天天更新影院 | 永久在线观看www免费视频 | 女人大毛片一级毛片一 | 奇米影视亚洲狠狠色777不卡 | 男人一级片 | 亚洲免费不卡 | 午夜精品久久久久久久久 | 老师别揉我胸啊嗯上课呢视频 | 亚洲一区在线视频 | 丁香花在线| 岛国大片在线播放 | 欧美一卡二三卡四卡不卡 | 色视频在线播放 | 国产性videosgratis | 久月婷婷| 狠狠躁夜夜躁人人躁婷婷视频 | 国产―笫一页―浮力影院xyz | 在线免费看片 | 一级在线观看视频 | 啪啪调教所29下拉式免费阅读 | 狠狠操天天干 | 久草cm| 四虎影库永久在线 | 亚洲三级电影 | 一级毛片在线不卡直接观看 | 图片区网友自拍另类图区 | 免费又黄又爽的禁片视频 | 久久男女 | 国产精品一久久香蕉产线看 | 午夜tv| 91九色porny蝌蚪| 二级黄绝大片中国免费视频 | 天堂a免费视频在线观看 | 网站在线观看视频 | 激情五月综合 | 国产高清免费午夜在线视频 | 毛片多多 | 天堂中文网 | 三级黄色录像 |