找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2347|回复: 3
收起左侧

stm32餐厨油烟在线监测代码

[复制链接]
ID:426765 发表于 2018-11-14 23:25 | 显示全部楼层 |阅读模式
餐厨油烟监测项目,采集油烟浓度,压力,温湿度,通过GPRS上传数据中心。

单片机源程序如下:
  1. /* Includes ------------------------------------------------------------------*/
  2. #include "main.h"
  3. #include "stm32f2xx_hal.h"
  4. #include "cmsis_os.h"
  5. #include "fatfs.h"
  6. #include "usb_device.h"

  7. /* USER CODE BEGIN Includes */

  8. /* USER CODE END Includes */

  9. /* Private variables ---------------------------------------------------------*/
  10. CRC_HandleTypeDef hcrc;

  11. IWDG_HandleTypeDef hiwdg;

  12. RTC_HandleTypeDef hrtc;

  13. SD_HandleTypeDef hsd;

  14. SPI_HandleTypeDef hspi1;

  15. TIM_HandleTypeDef htim2;

  16. UART_HandleTypeDef huart4;
  17. UART_HandleTypeDef huart1;
  18. UART_HandleTypeDef huart2;
  19. UART_HandleTypeDef huart3;
  20. UART_HandleTypeDef huart6;
  21. DMA_HandleTypeDef hdma_usart1_rx;
  22. DMA_HandleTypeDef hdma_usart3_rx;
  23. DMA_HandleTypeDef hdma_usart6_rx;

  24. osThreadId defaultTaskHandle;

  25. /* USER CODE BEGIN PV */
  26. /* Private variables ---------------------------------------------------------*/

  27. /* USER CODE END PV */

  28. /* Private function prototypes -----------------------------------------------*/
  29. void SystemClock_Config(void);
  30. static void MX_GPIO_Init(void);
  31. static void MX_DMA_Init(void);
  32. static void MX_SDIO_SD_Init(void);
  33. static void MX_SPI1_Init(void);
  34. static void MX_UART4_Init(void);
  35. static void MX_USART1_UART_Init(void);
  36. static void MX_USART2_UART_Init(void);
  37. static void MX_USART3_UART_Init(void);
  38. static void MX_USART6_UART_Init(void);
  39. static void MX_RTC_Init(void);
  40. static void MX_IWDG_Init(void);
  41. static void MX_TIM2_Init(void);
  42. static void MX_CRC_Init(void);
  43. void StartDefaultTask(void const * argument);

  44. /* USER CODE BEGIN PFP */
  45. /* Private function prototypes -----------------------------------------------*/

  46. /* USER CODE END PFP */

  47. /* USER CODE BEGIN 0 */

  48. /* USER CODE END 0 */

  49. int main(void)
  50. {

  51.   /* USER CODE BEGIN 1 */

  52.   /* USER CODE END 1 */

  53.   /* MCU Configuration----------------------------------------------------------*/

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

  56.   /* USER CODE BEGIN Init */

  57.   /* USER CODE END Init */

  58.   /* Configure the system clock */
  59.   SystemClock_Config();

  60.   /* USER CODE BEGIN SysInit */

  61.   /* USER CODE END SysInit */

  62.   /* Initialize all configured peripherals */
  63.   MX_GPIO_Init();
  64.   MX_DMA_Init();
  65.   MX_SDIO_SD_Init();
  66.   MX_SPI1_Init();
  67.   MX_UART4_Init();
  68.   MX_USART1_UART_Init();
  69.   MX_USART2_UART_Init();
  70.   MX_USART3_UART_Init();
  71.   MX_USART6_UART_Init();
  72.   MX_RTC_Init();
  73.   MX_IWDG_Init();
  74.   MX_TIM2_Init();
  75.   MX_CRC_Init();

  76.   /* USER CODE BEGIN 2 */

  77.   /* USER CODE END 2 */

  78.   /* USER CODE BEGIN RTOS_MUTEX */
  79.   /* add mutexes, ... */
  80.   /* USER CODE END RTOS_MUTEX */

  81.   /* USER CODE BEGIN RTOS_SEMAPHORES */
  82.   /* add semaphores, ... */
  83.   /* USER CODE END RTOS_SEMAPHORES */

  84.   /* USER CODE BEGIN RTOS_TIMERS */
  85.   /* start timers, add new ones, ... */
  86.   /* USER CODE END RTOS_TIMERS */

  87.   /* Create the thread(s) */
  88.   /* definition and creation of defaultTask */
  89.   osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 768);
  90.   defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);

  91.   /* USER CODE BEGIN RTOS_THREADS */
  92.   /* add threads, ... */
  93.   /* USER CODE END RTOS_THREADS */

  94.   /* USER CODE BEGIN RTOS_QUEUES */
  95.   /* add queues, ... */
  96.   /* USER CODE END RTOS_QUEUES */


  97.   /* Start scheduler */
  98.   osKernelStart();
  99.   
  100.   /* We should never get here as control is now taken by the scheduler */

  101.   /* Infinite loop */
  102.   /* USER CODE BEGIN WHILE */
  103.   while (1)
  104.   {
  105.   /* USER CODE END WHILE */

  106.   /* USER CODE BEGIN 3 */

  107.   }
  108.   /* USER CODE END 3 */

  109. }

  110. /** System Clock Configuration
  111. */
  112. void SystemClock_Config(void)
  113. {

  114.   RCC_OscInitTypeDef RCC_OscInitStruct;
  115.   RCC_ClkInitTypeDef RCC_ClkInitStruct;
  116.   RCC_PeriphCLKInitTypeDef PeriphClkInitStruct;

  117.     /**Initializes the CPU, AHB and APB busses clocks
  118.     */
  119.   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI|RCC_OSCILLATORTYPE_HSE
  120.                               |RCC_OSCILLATORTYPE_LSE;
  121.   RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  122.   RCC_OscInitStruct.LSEState = RCC_LSE_ON;
  123.   RCC_OscInitStruct.LSIState = RCC_LSI_ON;
  124.   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  125.   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  126.   RCC_OscInitStruct.PLL.PLLM = 20;
  127.   RCC_OscInitStruct.PLL.PLLN = 192;
  128.   RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
  129.   RCC_OscInitStruct.PLL.PLLQ = 5;
  130.   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  131.   {
  132.     _Error_Handler(__FILE__, __LINE__);
  133.   }

  134.     /**Initializes the CPU, AHB and APB busses clocks
  135.     */
  136.   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  137.                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  138.   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  139.   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  140.   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
  141.   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;

  142.   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_3) != HAL_OK)
  143.   {
  144.     _Error_Handler(__FILE__, __LINE__);
  145.   }

  146.   PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC;
  147.   PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
  148.   if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
  149.   {
  150.     _Error_Handler(__FILE__, __LINE__);
  151.   }

  152.     /**Configure the Systick interrupt time
  153.     */
  154.   HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

  155.     /**Configure the Systick
  156.     */
  157.   HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

  158.   /* SysTick_IRQn interrupt configuration */
  159.   HAL_NVIC_SetPriority(SysTick_IRQn, 15, 0);
  160. }

  161. /* CRC init function */
  162. static void MX_CRC_Init(void)
  163. {

  164.   hcrc.Instance = CRC;
  165.   if (HAL_CRC_Init(&hcrc) != HAL_OK)
  166.   {
  167.     _Error_Handler(__FILE__, __LINE__);
  168.   }

  169. }

  170. /* IWDG init function */
  171. static void MX_IWDG_Init(void)
  172. {

  173.   hiwdg.Instance = IWDG;
  174.   hiwdg.Init.Prescaler = IWDG_PRESCALER_256;
  175.   hiwdg.Init.Reload = 4095;
  176.   if (HAL_IWDG_Init(&hiwdg) != HAL_OK)
  177.   {
  178.     _Error_Handler(__FILE__, __LINE__);
  179.   }

  180. }

  181. /* RTC init function */
  182. static void MX_RTC_Init(void)
  183. {

  184.   RTC_TimeTypeDef sTime;
  185.   RTC_DateTypeDef sDate;

  186.     /**Initialize RTC Only
  187.     */
  188.   hrtc.Instance = RTC;
  189.   hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
  190.   hrtc.Init.AsynchPrediv = 127;
  191.   hrtc.Init.SynchPrediv = 255;
  192.   hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
  193.   hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
  194.   hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
  195.   if (HAL_RTC_Init(&hrtc) != HAL_OK)
  196.   {
  197.     _Error_Handler(__FILE__, __LINE__);
  198.   }

  199.     /**Initialize RTC and set the Time and Date
  200.     */
  201.   if(HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR0) != 0x32F2){
  202.   sTime.Hours = 20;
  203.   sTime.Minutes = 42;
  204.   sTime.Seconds = 42;
  205.   sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
  206.   sTime.StoreOperation = RTC_STOREOPERATION_RESET;
  207.   if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN) != HAL_OK)
  208.   {
  209.     _Error_Handler(__FILE__, __LINE__);
  210.   }

  211.   sDate.WeekDay = RTC_WEEKDAY_SUNDAY;
  212.   sDate.Month = RTC_MONTH_APRIL;
  213.   sDate.Date = 30;
  214.   sDate.Year = 0;

  215.   if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN) != HAL_OK)
  216.   {
  217.     _Error_Handler(__FILE__, __LINE__);
  218.   }

  219.     HAL_RTCEx_BKUPWrite(&hrtc,RTC_BKP_DR0,0x32F2);
  220.   }

  221. }

  222. /* SDIO init function */
  223. static void MX_SDIO_SD_Init(void)
  224. {

  225.   hsd.Instance = SDIO;
  226.   hsd.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING;
  227.   hsd.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE;
  228.   hsd.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE;
  229.   hsd.Init.BusWide = SDIO_BUS_WIDE_1B;
  230.   hsd.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_DISABLE;
  231.   hsd.Init.ClockDiv = 0;

  232. }

  233. /* SPI1 init function */
  234. static void MX_SPI1_Init(void)
  235. {

  236.   hspi1.Instance = SPI1;
  237.   hspi1.Init.Mode = SPI_MODE_MASTER;
  238.   hspi1.Init.Direction = SPI_DIRECTION_2LINES;
  239.   hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
  240.   hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
  241.   hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
  242.   hspi1.Init.NSS = SPI_NSS_HARD_OUTPUT;
  243.   hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
  244.   hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
  245.   hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
  246.   hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  247.   hspi1.Init.CRCPolynomial = 10;
  248.   if (HAL_SPI_Init(&hspi1) != HAL_OK)
  249.   {
  250.     _Error_Handler(__FILE__, __LINE__);
  251.   }

  252. }

  253. /* TIM2 init function */
  254. static void MX_TIM2_Init(void)
  255. {

  256.   TIM_ClockConfigTypeDef sClockSourceConfig;
  257.   TIM_MasterConfigTypeDef sMasterConfig;

  258.   htim2.Instance = TIM2;
  259.   htim2.Init.Prescaler = 0;
  260.   htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  261.   htim2.Init.Period = 0;
  262.   htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  263.   htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  264.   if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
  265.   {
  266.     _Error_Handler(__FILE__, __LINE__);
  267.   }

  268.   sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  269.   if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
  270.   {
  271.     _Error_Handler(__FILE__, __LINE__);
  272.   }

  273.   sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  274.   sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  275.   if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
  276.   {
  277.     _Error_Handler(__FILE__, __LINE__);
  278.   }

  279. }

  280. /* UART4 init function */
  281. static void MX_UART4_Init(void)
  282. {

  283.   huart4.Instance = UART4;
  284.   huart4.Init.BaudRate = 115200;
  285.   huart4.Init.WordLength = UART_WORDLENGTH_8B;
  286.   huart4.Init.StopBits = UART_STOPBITS_1;
  287.   huart4.Init.Parity = UART_PARITY_NONE;
  288.   huart4.Init.Mode = UART_MODE_TX_RX;
  289.   huart4.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  290.   huart4.Init.OverSampling = UART_OVERSAMPLING_16;
  291.   if (HAL_UART_Init(&huart4) != HAL_OK)
  292.   {
  293.     _Error_Handler(__FILE__, __LINE__);
  294.   }

  295. }

  296. /* USART1 init function */
  297. static void MX_USART1_UART_Init(void)
  298. {

  299.   huart1.Instance = USART1;
  300.   huart1.Init.BaudRate = 115200;
  301.   huart1.Init.WordLength = UART_WORDLENGTH_8B;
  302.   huart1.Init.StopBits = UART_STOPBITS_1;
  303.   huart1.Init.Parity = UART_PARITY_NONE;
  304.   huart1.Init.Mode = UART_MODE_TX_RX;
  305.   huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  306.   huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  307.   if (HAL_UART_Init(&huart1) != HAL_OK)
  308.   {
  309.     _Error_Handler(__FILE__, __LINE__);
  310.   }

  311. }

  312. /* USART2 init function */
  313. static void MX_USART2_UART_Init(void)
  314. {

  315.   huart2.Instance = USART2;
  316.   huart2.Init.BaudRate = 115200;
  317.   huart2.Init.WordLength = UART_WORDLENGTH_8B;
  318.   huart2.Init.StopBits = UART_STOPBITS_1;
  319.   huart2.Init.Parity = UART_PARITY_NONE;
  320.   huart2.Init.Mode = UART_MODE_TX_RX;
  321.   huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  322.   huart2.Init.OverSampling = UART_OVERSAMPLING_16;
  323.   if (HAL_UART_Init(&huart2) != HAL_OK)
  324.   {
  325.     _Error_Handler(__FILE__, __LINE__);
  326.   }

  327. }

  328. /* USART3 init function */
  329. static void MX_USART3_UART_Init(void)
  330. {

  331.   huart3.Instance = USART3;
  332.   huart3.Init.BaudRate = 115200;
  333.   huart3.Init.WordLength = UART_WORDLENGTH_8B;
  334.   huart3.Init.StopBits = UART_STOPBITS_1;
  335.   huart3.Init.Parity = UART_PARITY_NONE;
  336.   huart3.Init.Mode = UART_MODE_TX_RX;
  337.   huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  338.   huart3.Init.OverSampling = UART_OVERSAMPLING_16;
  339.   if (HAL_UART_Init(&huart3) != HAL_OK)
  340.   {
  341.     _Error_Handler(__FILE__, __LINE__);
  342.   }

  343. }

  344. /* USART6 init function */
  345. static void MX_USART6_UART_Init(void)
  346. {

  347.   huart6.Instance = USART6;
  348.   huart6.Init.BaudRate = 115200;
  349.   huart6.Init.WordLength = UART_WORDLENGTH_8B;
  350.   huart6.Init.StopBits = UART_STOPBITS_1;
  351.   huart6.Init.Parity = UART_PARITY_NONE;
  352.   huart6.Init.Mode = UART_MODE_TX_RX;
  353.   huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  354.   huart6.Init.OverSampling = UART_OVERSAMPLING_16;
  355.   if (HAL_UART_Init(&huart6) != HAL_OK)
  356.   {
  357.     _Error_Handler(__FILE__, __LINE__);
  358.   }

  359. }

  360. /**
  361.   * Enable DMA controller clock
  362.   */
  363. static void MX_DMA_Init(void)
  364. {
  365.   /* DMA controller clock enable */
  366.   __HAL_RCC_DMA2_CLK_ENABLE();
  367.   __HAL_RCC_DMA1_CLK_ENABLE();

  368.   /* DMA interrupt init */
  369.   /* DMA1_Stream1_IRQn interrupt configuration */
  370.   HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 5, 0);
  371.   HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
  372.   /* DMA2_Stream2_IRQn interrupt configuration */
  373.   HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 5, 0);
  374.   HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
  375.   /* DMA2_Stream5_IRQn interrupt configuration */
  376.   HAL_NVIC_SetPriority(DMA2_Stream5_IRQn, 5, 0);
  377.   HAL_NVIC_EnableIRQ(DMA2_Stream5_IRQn);

  378. }

  379. /** Configure pins as
  380.         * Analog
  381.         * Input
  382.         * Output
  383.         * EVENT_OUT
  384.         * EXTI
  385. */
  386. static void MX_GPIO_Init(void)
  387. {

  388.   GPIO_InitTypeDef GPIO_InitStruct;

  389.   /* GPIO Ports Clock Enable */
  390.   __HAL_RCC_GPIOC_CLK_ENABLE();
  391.   __HAL_RCC_GPIOH_CLK_ENABLE();
  392.   __HAL_RCC_GPIOA_CLK_ENABLE();
  393.   __HAL_RCC_GPIOB_CLK_ENABLE();
  394.   __HAL_RCC_GPIOD_CLK_ENABLE();

  395.   /*Configure GPIO pin Output Level */
  396.   HAL_GPIO_WritePin(GPIOC, LED5_Pin|LED4_Pin|LED3_Pin|LED2_Pin
  397.                           |LED1_Pin|W5500RST_Pin, GPIO_PIN_RESET);

  398.   /*Configure GPIO pin Output Level */
  399.   HAL_GPIO_WritePin(GPIOB, C485E_Pin|JDQ1_Pin|JDQ2_Pin|LED6_Pin, GPIO_PIN_RESET);

  400.   /*Configure GPIO pin Output Level */
  401.   HAL_GPIO_WritePin(CGE_GPIO_Port, CGE_Pin, GPIO_PIN_RESET);

  402.   /*Configure GPIO pins : LED5_Pin LED4_Pin LED3_Pin LED2_Pin
  403.                            LED1_Pin W5500RST_Pin */
  404.   GPIO_InitStruct.Pin = LED5_Pin|LED4_Pin|LED3_Pin|LED2_Pin
  405.                           |LED1_Pin|W5500RST_Pin;
  406.   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  407.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  408.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  409.   HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

  410.   /*Configure GPIO pin : W5500INT_Pin */
  411.   GPIO_InitStruct.Pin = W5500INT_Pin;
  412.   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  413.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  414.   HAL_GPIO_Init(W5500INT_GPIO_Port, &GPIO_InitStruct);

  415.   /*Configure GPIO pins : JDSR1_Pin JDSR2_Pin BUSY_Pin */
  416.   GPIO_InitStruct.Pin = JDSR1_Pin|JDSR2_Pin|BUSY_Pin;
  417.   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  418.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  419.   HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

  420.   /*Configure GPIO pin : C485E_Pin */
  421.   GPIO_InitStruct.Pin = C485E_Pin;
  422.   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  423.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  424.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM;
  425.   HAL_GPIO_Init(C485E_GPIO_Port, &GPIO_InitStruct);

  426.   /*Configure GPIO pins : JDQ1_Pin JDQ2_Pin LED6_Pin */
  427.   GPIO_InitStruct.Pin = JDQ1_Pin|JDQ2_Pin|LED6_Pin;
  428.   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  429.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  430.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  431.   HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

  432.   /*Configure GPIO pin : CGE_Pin */
  433.   GPIO_InitStruct.Pin = CGE_Pin;
  434.   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  435.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  436.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM;
  437.   HAL_GPIO_Init(CGE_GPIO_Port, &GPIO_InitStruct);

  438.   /*Configure GPIO pins : KEY6_Pin KEY5_Pin KEY4_Pin KEY3_Pin
  439.                            KEY2_Pin KEY1_Pin */
  440.   GPIO_InitStruct.Pin = KEY6_Pin|KEY5_Pin|KEY4_Pin|KEY3_Pin
  441.                           |KEY2_Pin|KEY1_Pin;
  442.   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  443.   GPIO_InitStruct.Pull = GPIO_PULLUP;
  444.   HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

  445. }

  446. /* USER CODE BEGIN 4 */

  447. /* USER CODE END 4 */

  448. /* StartDefaultTask function */
  449. void StartDefaultTask(void const * argument)
  450. {
  451.   /* init code for USB_DEVICE */
  452.   MX_USB_DEVICE_Init();

  453.   /* init code for FATFS */
  454.   MX_FATFS_Init();

  455.   /* USER CODE BEGIN 5 */
  456.   /* Infinite loop */
  457.   for(;;)
  458.   {
  459.     osDelay(1);
  460.   }
  461.   /* USER CODE END 5 */
  462. ……………………

  463. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
CNB.zip (880.87 KB, 下载次数: 21)
回复

使用道具 举报

ID:1 发表于 2018-11-15 03:33 | 显示全部楼层
原理图能分享吗?
回复

使用道具 举报

ID:235588 发表于 2018-11-15 09:44 | 显示全部楼层
谢谢大佬分享
回复

使用道具 举报

ID:720649 发表于 2020-5-3 10:44 | 显示全部楼层
能分享一下原理图吗楼主
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表