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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32直流無刷電機開環控制代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:602087 發表于 2020-4-5 17:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
用霍爾傳感器的直流無刷電機開環控制代碼,上傳分享,賺一點黑幣,驅動板是STM32F407ZET6

轉自硬石的單片機源程序如下:
  1. /* 包含頭文件 ----------------------------------------------------------------*/
  2. #include "main.h"
  3. #include "stm32f4xx_hal.h"
  4. #include "bldc/bsp_bldc.h"
  5. #include "key/bsp_key.h"
  6. #include "led/bsp_led.h"
  7. /* 私有類型定義 --------------------------------------------------------------*/
  8. /* 私有宏定義 ----------------------------------------------------------------*/
  9. /* 私有變量 ------------------------------------------------------------------*/
  10. uint32_t IS_EnableMotor = 0;  // 使能電機標志
  11. /* 擴展變量 ------------------------------------------------------------------*/
  12. /* 私有函數原形 --------------------------------------------------------------*/
  13. /* 函數體 --------------------------------------------------------------------*/
  14. /**
  15.   * 函數功能: 系統時鐘配置
  16.   * 輸入參數: 無
  17.   * 返 回 值: 無
  18.   * 說    明: 無
  19.   */
  20. void SystemClock_Config(void)
  21. {

  22.   RCC_OscInitTypeDef RCC_OscInitStruct;
  23.   RCC_ClkInitTypeDef RCC_ClkInitStruct;

  24.   __HAL_RCC_PWR_CLK_ENABLE();                                     // 使能PWR時鐘

  25.   __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);  // 設置調壓器輸出電壓級別1

  26.   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;      // 外部晶振,8MHz
  27.   RCC_OscInitStruct.HSEState = RCC_HSE_ON;                        // 打開HSE
  28.   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;                    // 打開PLL
  29.   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;            // PLL時鐘源選擇HSE
  30.   RCC_OscInitStruct.PLL.PLLM = 8;                                 // 8分頻MHz
  31.   RCC_OscInitStruct.PLL.PLLN = 336;                               // 336倍頻
  32.   RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;                     // 2分頻,得到168MHz主時鐘
  33.   RCC_OscInitStruct.PLL.PLLQ = 7;                                 // USB/SDIO/隨機數產生器等的主PLL分頻系數
  34.   HAL_RCC_OscConfig(&RCC_OscInitStruct);

  35.   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  36.                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  37.   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;       // 系統時鐘:168MHz
  38.   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;              // AHB時鐘: 168MHz
  39.   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;               // APB1時鐘:42MHz
  40.   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;               // APB2時鐘:84MHz
  41.   HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5);

  42.   HAL_RCC_EnableCSS();                                            // 使能CSS功能,優先使用外部晶振,內部時鐘源為備用
  43.   
  44.          // HAL_RCC_GetHCLKFreq()/1000    1ms中斷一次
  45.         // HAL_RCC_GetHCLKFreq()/100000         10us中斷一次
  46.         // HAL_RCC_GetHCLKFreq()/1000000 1us中斷一次
  47.   HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);                 // 配置并啟動系統滴答定時器
  48.   /* 系統滴答定時器時鐘源 */
  49.   HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

  50.   /* 系統滴答定時器中斷優先級配置 */
  51.   HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
  52. }

  53. /**
  54.   * 函數功能: 主函數.
  55.   * 輸入參數: 無
  56.   * 返 回 值: 無
  57.   * 說    明: 無
  58.   */
  59. int main(void)
  60. {
  61.   /* 復位所有外設,初始化Flash接口和系統滴答定時器 */
  62.   HAL_Init();
  63.   /* 配置系統時鐘 */
  64.   SystemClock_Config();
  65.   /* 初始化按鍵配置 */
  66.   KEY_GPIO_Init();
  67.   /* 初始化指示燈 */
  68.   LED_GPIO_Init();
  69.   /* 初始化霍爾傳感器接口 */
  70.   HALL_TIMx_Init();
  71.   /* 初始化定時器各通道輸出 */
  72.   BLDCMOTOR_TIMx_Init();
  73.   /* 啟動定時器 */
  74.   HAL_TIM_Base_Start(&htimx_BLDC);  
  75.   while (1)
  76.   {
  77.     /* 使能電機 */
  78.     if(KEY1_StateRead() == KEY_DOWN)
  79.     {
  80.       Enable_BLDC();
  81.       IS_EnableMotor = 1;  
  82.       LED3_OFF;
  83.     }
  84.     /* 電機換向 */
  85.     if(KEY2_StateRead() == KEY_DOWN)
  86.     {
  87.       Dir = -Dir;
  88.     }
  89.     /* 電機停止 */
  90.     if(KEY3_StateRead() == KEY_DOWN)
  91.     {
  92.       Disable_BLDC();
  93.       IS_EnableMotor = 0;      
  94.     }
  95.   }
  96. }

  97. /**
  98.   * 函數功能: 系統滴答定時器中斷回調函數
  99.   * 輸入參數: 無
  100.   * 返 回 值: 無
  101.   * 說    明: 每發生一次滴答定時器中斷進入該回調函數一次
  102.   */
  103. void HAL_SYSTICK_Callback()
  104. {
  105.   if(IS_EnableMotor)
  106.   {
  107.     Lock_Time++;
  108.     /* 超過100ms 則認為是堵轉,停止PWM輸出 */
  109.     if(Lock_Time >= 100)  //100ms
  110.     {
  111.       Disable_BLDC();
  112.       LED3_TOGGLE;
  113.       Lock_Time = 0;
  114.     }
  115.   }
  116. }
  117. /******************* (C) COPYRIGHT 2015-2020 硬石嵌入式開發團隊 *****END OF FILE****/
復制代碼

所有資料51hei提供下載:
YSF4_HAL_MOTOR-503. 霍爾傳感器接口(開環控制).7z (3.63 MB, 下載次數: 96)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:445750 發表于 2021-10-14 10:25 | 只看該作者
STM32F407ZET6  芯片貴,不易用開推廣
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品在线一区 | 久久免费精品视频 | 91久久精品国产 | 欧美一区2区三区4区公司 | 亚洲精品4 | 日本欧美大片 | 福利片在线 | 99热热热热 | 中文字幕乱码一区二区三区 | 国产一区 日韩 | 亚洲区一区二 | 久久久久国产精品 | 国产精品无 | 久久亚洲一区二区 | 国产视频中文字幕 | 黄色骚片 | 中文字幕亚洲国产 | 国产午夜在线观看 | 人人性人人性碰国产 | 欧美日韩精品在线免费观看 | 一级大片网站 | 中文欧美日韩 | 国产女人第一次做爰毛片 | 欧美日韩亚洲一区 | 久久精品欧美一区二区三区不卡 | 亚洲成人福利在线观看 | 自拍偷拍亚洲欧美 | 欧美精品一区二区三区蜜桃视频 | 91精品国产91久久久久久不卞 | 欧美在线一级 | 日本精品视频 | 免费看国产一级特黄aaaa大片 | 99热首页 | 成人免费大片黄在线播放 | 日韩欧美在线免费观看 | 99视频免费看 | 国产成人av免费看 | 神马久久av| 欧美日韩国产不卡 | 亚洲播放一区 | 毛片在线视频 |