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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3756|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品欧美一区免费观看α√ | 一级片网站视频 | 国产日韩欧美一区二区在线播放 | 精品一区二区三区四区 | 日韩二三区 | 精品国产一级 | 大久| 免费人成激情视频在线观看冫 | 亚洲精品在线免费看 | 亚洲欧美视频一区二区 | 国产丝袜一区二区三区免费视频 | 中文成人在线 | 午夜激情在线视频 | 亚洲激情视频在线 | 国产乱xxav| 国产三区视频在线观看 | 一区二区视频在线 | 国产高清视频一区二区 | 国产色99精品9i | 欧美在线一区视频 | 日韩成年人视频在线 | 岛国二区| 国产在线视频三区 | 国产精品久久国产精品 | 99精品免费 | 韩国久久 | 91久久夜色 | 久久在线免费 | 久久久久久美女 | 精久久久久| 日韩精品在线观看视频 | 在线观看成人精品 | 国产精品激情 | 国产精品一码二码三码在线 | av免费网站在线观看 | 日韩五月天 | 日韩视频一区二区 | 91精品在线播放 | 久久久黄色| 欧美另类视频在线 | 精品久久一区 |