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

標題: STM32直流無刷電機開環控制代碼 [打印本頁]

作者: melanmoon5    時間: 2020-4-5 17:20
標題: STM32直流無刷電機開環控制代碼
用霍爾傳感器的直流無刷電機開環控制代碼,上傳分享,賺一點黑幣,驅動板是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)



作者: wqy589    時間: 2021-10-14 10:25
STM32F407ZET6  芯片貴,不易用開推廣




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩av一区二区在线观看 | 国产精品亚洲视频 | 欧美日韩在线观看视频网站 | 日本在线一区二区 | 蜜桃视频一区二区三区 | 国家aaa的一级看片 h片在线看 | 精品久久久久久久久久久久久久 | 国产一区不卡 | 午夜影视 | av不卡一区| 一区二区视频免费观看 | 亚洲 中文 欧美 日韩 在线观看 | 成人精品视频免费 | 在线国产一区二区三区 | 日本一区二区三区视频在线 | 久久精品视频网站 | 91大神新作在线观看 | 精品视频导航 | 瑞克和莫蒂第五季在线观看 | 久久久久久久久久久久久久久久久久久久 | 日韩精品一区二区三区在线 | 免费黄色a视频 | 欧美一区二区三区在线观看 | xxx视频| 久久久青草婷婷精品综合日韩 | 国产精品久久a | 国产不卡在线 | 欧美一区二区三区视频 | 色站综合| 天天操夜夜操 | 一区二区三区亚洲精品国 | 精品国产一区久久 | 亚洲风情在线观看 | www.久草.com | 日日夜夜免费精品视频 | 国产视频久 | www.日本三级| 超碰人人人人 | 久久aⅴ乱码一区二区三区 亚洲欧美综合精品另类天天更新 | 在线观看国产视频 | 91免费在线|