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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3685|回復(fù): 2
收起左側(cè)

STM32F103C8T6平衡小車(HAL庫版)源程序

[復(fù)制鏈接]
ID:466381 發(fā)表于 2021-3-9 01:17 | 顯示全部樓層 |閱讀模式
最近在弄平衡小車,然后移植了一下平衡小車的代碼到cubemx上,現(xiàn)在發(fā)上來供大家學(xué)習(xí)。

  1. /* USER CODE END Header */
  2. /* Includes ------------------------------------------------------------------*/
  3. #include "main.h"
  4. #include "adc.h"
  5. #include "tim.h"
  6. #include "usart.h"
  7. #include "gpio.h"

  8. /* Private includes ----------------------------------------------------------*/
  9. /* USER CODE BEGIN Includes */
  10. float Voltage;                                                                                                          //電池電壓采樣相關(guān)的變量
  11. float pitch,roll,yaw;                                                                                 //歐拉角
  12. short aacx,aacy,aacz;                                                                                //加速度傳感器原始數(shù)據(jù)
  13. short gyrox,gyroy,gyroz;                                                                        //陀螺儀原始數(shù)據(jù)
  14. float UltrasonicWave_Distance;                              //超聲波測距
  15. int   Encoder_Left,Encoder_Right;        //左右編碼器的脈沖計數(shù)
  16. int          Moto1,Moto2;                                                                                    //計算出來的最終賦給電機(jī)的PWM
  17. int          Flag_Qian,Flag_Hou,Flag_Left,Flag_Right; //藍(lán)牙遙控相關(guān)的變量
  18. unsigned char flag_UltrasonicWave;
  19. uint8_t RECEIVE_SJJ;
  20. /* USER CODE END Includes */

  21. /* Private typedef -----------------------------------------------------------*/
  22. /* USER CODE BEGIN PTD */

  23. /* USER CODE END PTD */

  24. /* Private define ------------------------------------------------------------*/
  25. /* USER CODE BEGIN PD */
  26. /* USER CODE END PD */

  27. /* Private macro -------------------------------------------------------------*/
  28. /* USER CODE BEGIN PM */

  29. /* USER CODE END PM */

  30. /* Private variables ---------------------------------------------------------*/

  31. /* USER CODE BEGIN PV */

  32. /* USER CODE END PV */

  33. /* Private function prototypes -----------------------------------------------*/
  34. void SystemClock_Config(void);
  35. /* USER CODE BEGIN PFP */

  36. /* USER CODE END PFP */

  37. /* Private user code ---------------------------------------------------------*/
  38. /* USER CODE BEGIN 0 */

  39. /* USER CODE END 0 */

  40. /**
  41.   * @brief  The application entry point.
  42.   * @retval int
  43.   */
  44. int main(void)
  45. {
  46.   /* USER CODE BEGIN 1 */

  47.   /* USER CODE END 1 */

  48.   /* MCU Configuration--------------------------------------------------------*/

  49.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  50.   HAL_Init();

  51.   /* USER CODE BEGIN Init */

  52.   /* USER CODE END Init */

  53.   /* Configure the system clock */
  54.   SystemClock_Config();

  55.   /* USER CODE BEGIN SysInit */

  56.   /* USER CODE END SysInit */

  57.   /* Initialize all configured peripherals */
  58.   MX_GPIO_Init();
  59.   MX_TIM2_Init();
  60.   MX_TIM4_Init();
  61.   MX_TIM1_Init();
  62.   MX_USART1_UART_Init();
  63.   MX_ADC1_Init();
  64.   MX_TIM3_Init();
  65.   /* USER CODE BEGIN 2 */
  66.         HAL_UART_Receive_IT(&huart1,&RECEIVE_SJJ,1);
  67.   /* USER CODE END 2 */

  68.   /* Infinite loop */
  69.   /* USER CODE BEGIN WHILE */
  70.                
  71. /*****************************************************************************/               
  72.         /*uart3_init(115200);            //=====初始化串口3
  73.         NVIC_Configuration();                                         //=====中斷優(yōu)先級分組,其中包含了所有的中斷優(yōu)先級的配置,方便管理和一次性修改。
  74.         Adc_Init();                    //=====初始化ADC
  75.         Encoder_Init_TIM2();           //=====初始化編碼器2
  76.         Encoder_Init_TIM4();           //=====初始化編碼器4
  77.         Timer3_Init(5000,7199);                     //=====超聲波定時器初始化*/
  78.         OLED_Init();                   //=====OLED初始化
  79.         OLED_Clear();                                                                         //=====OLED清屏
  80.         MPU_Init();                                                                     //=====初始化MPU6050
  81.         mpu_dmp_init();                                                                 //=====初始化MPU6050的DMP模式                                         
  82.         //UltrasonicWave_Configuration();//=====初始化超聲波的硬件IO口
  83.         //TIM1_PWM_Init(7199,0);                            //=====初始化PWM 10KHZ,用于驅(qū)動電機(jī)。
  84.         delay_ms(1000);                                                                 //=====延時1s 解決小車上電輪子亂轉(zhuǎn)的問題
  85.         delay_ms(1000);                                                                 //=====延時1s 解決小車上電輪子亂轉(zhuǎn)的問題
  86.         Motor_Init();                                                                         //=====初始化與電機(jī)連接的硬件IO接口
  87.         //MPU6050_EXTI_Init();                                         //=====MPU6050 5ms定時中斷初始化
  88.         oled_first_show();                                           //只需要顯示一次的字符,在此刷新一次即可。        
  89.   while (1)
  90.   {
  91.     /* USER CODE END WHILE */

  92.     /* USER CODE BEGIN 3 */
  93.                 oled_show();
  94.                 //Set_Pwm(7000,7000);
  95.                 delay_ms(50); //20HZ的顯示頻率,屏幕無需時刻刷新。
  96.   }
  97.   /* USER CODE END 3 */
  98. }

  99. /**
  100.   * @brief System Clock Configuration
  101.   * @retval None
  102.   */
  103. void SystemClock_Config(void)
  104. {
  105.   RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  106.   RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  107.   RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};

  108.   /** Initializes the RCC Oscillators according to the specified parameters
  109.   * in the RCC_OscInitTypeDef structure.
  110.   */
  111.   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  112.   RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  113.   RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
  114.   RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  115.   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  116.   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  117.   RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
  118.   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  119.   {
  120.     Error_Handler();
  121.   }
  122.   /** Initializes the CPU, AHB and APB buses clocks
  123.   */
  124.   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  125.                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  126.   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  127.   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  128.   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
  129.   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

  130.   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
  131.   {
  132.     Error_Handler();
  133.   }
  134.   PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;
  135.   PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6;
  136.   if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
  137.   {
  138.     Error_Handler();
  139.   }
  140.   /** Enables the Clock Security System
  141.   */
  142.   HAL_RCC_EnableCSS();
  143. }

  144. /* USER CODE BEGIN 4 */

  145. /* USER CODE END 4 */

  146. /**
  147.   * @brief  This function is executed in case of error occurrence.
  148.   * @retval None
  149.   */
  150. void Error_Handler(void)
  151. {
  152.   /* USER CODE BEGIN Error_Handler_Debug */
  153.   /* User can add his own implementation to report the HAL error return state */
  154.   __disable_irq();
  155.   while (1)
  156.   {
  157.   }
  158.   /* USER CODE END Error_Handler_Debug */
  159. }

  160. #ifdef  USE_FULL_ASSERT
  161. /**
  162.   * @brief  Reports the name of the source file and the source line number
  163.   *         where the assert_param error has occurred.
  164.   * @param  file: pointer to the source file name
  165.   * @param  line: assert_param error line source number
  166.   * @retval None
  167.   */
  168. void assert_failed(uint8_t *file, uint32_t line)
  169. {
  170.   /* USER CODE BEGIN 6 */
  171.   /* User can add his own implementation to report the file name and line number,
  172.      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  173.   /* USER CODE END 6 */
  174. }
  175. #endif /* USE_FULL_ASSERT */

  176. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
復(fù)制代碼


CHAOJIPINGHENGCHE.7z

5.2 MB, 下載次數(shù): 90, 下載積分: 黑幣 -5

評分

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

查看全部評分

回復(fù)

使用道具 舉報

ID:332674 發(fā)表于 2021-3-21 14:22 | 顯示全部樓層
大佬可以加個好友交流下嗎?我也是用hal庫寫,為什么您的6050程序我移植過去用不了呢?求助
回復(fù)

使用道具 舉報

ID:332674 發(fā)表于 2021-3-21 14:23 | 顯示全部樓層
大佬能加個好友交流下嗎?我也是用hal庫在寫最近,但是為什么移植你的6050代碼過去用不了呢?求助
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久尤物免费一区二区三区 | 久久精品一区二区视频 | 欧美成人a∨高清免费观看 老司机午夜性大片 | 牛牛热在线视频 | 一级高清免费毛片 | av男人的天堂av | 欧美激情综合五月色丁香小说 | 国产www成人 | 日韩中文字幕 | 亚洲乱码国产乱码精品精98午夜 | 一本岛道一二三不卡区 | 日韩一区中文字幕 | 美女视频一区二区三区 | 亚洲精选一区二区 | 欧美成人精品一区 | 日韩1区 | 欧美日韩不卡 | 97caoporn国产免费人人 | 一级免费视频 | 欧美v在线| 精品欧美久久 | 久久久精品一区二区三区 | 在线中文字幕视频 | 久久国产精品精品国产色婷婷 | 91资源在线 | 免费美女网站 | 午夜影院网站 | 欧美精品综合在线 | 成人精品一区 | 欧美亚洲网站 | 国产在线视频在线观看 | 精品一二三 | 久久天堂| 国产在线高清 | 免费欧美视频 | 91九色视频| 黄色大全免费看 | 一级黄色播放 | 九九精品在线 | 黄色一级免费 | 欧美精品一区三区 |