色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

    文章

    5193

    瀏覽量

    214256
  • 定時器
    +關注

    關注

    23

    文章

    3251

    瀏覽量

    115033
  • FreeRTOS
    +關注

    關注

    12

    文章

    484

    瀏覽量

    62230
  • BLDC電機
    +關注

    關注

    7

    文章

    213

    瀏覽量

    21572
  • gd32f303
    +關注

    關注

    4

    文章

    38

    瀏覽量

    3699
收藏 人收藏

    評論

    相關推薦

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

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

    電機控制基礎知識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.6w次閱讀
    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 ?8019次閱讀
    <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 ?6164次閱讀
    <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 ?2793次閱讀
    <b class='flag-5'>GD32</b> Timer<b class='flag-5'>定時器</b>周期時間計算公式
    主站蜘蛛池模板: 啪啪后入内射日韩| 香港论理午夜电影网| 亚洲AV怡红院影院怡春院| 古月娜下面好紧好爽| 色综合伊人色综合网站中国 | 97 sese| 蜜芽tv在线www| av老司机色爱区综合| 人妖欧美一区二区三区四区| 粉嫩AV国产一区二区福利姬| 无码骚夜夜精品| 精品96在线观看影院| 中文乱码35页在线观看| 免费特黄一区二区三区视频一| caoporm国产精品视频免费| 男人到天堂a线牛叉在线| 不戴套挺进人妻怀孕| 亚洲色综合中文字幕在线| 欧美精品成人久久网站| 国产精人妻无码一区麻豆| 97国产露脸精品国产麻豆| 乌克兰16~18sex| 农民下乡在线观看3| 解开白丝老师的短裙猛烈进入| caoporen超碰在线视频| 野花影院手机在线观看| 色狗综合网| 男人把女人桶到高潮嗷嗷叫| 国产人妻麻豆蜜桃色| bl(高h)文| 亞洲人妻AV無碼在線視頻| 色翁荡熄月月| 男生插曲女生身全过程| 幻女FREE性俄罗斯学生| 姑娘视频日本在线播放 | 免费三级播放器| 国色天香社区视频免费高清3| 被老头下药玩好爽| 11 13加污女qq看他下面| 亚洲风情无码免费视频| 神马午夜不卡片|