• 1


      1 /**
      2   ******************************************************************************
      3   * File Name          : main.c
      4   * Description        : Main program body
      5   ******************************************************************************
      6   ** This notice applies to any and all portions of this file
      7   * that are not between comment pairs USER CODE BEGIN and
      8   * USER CODE END. Other portions of this file, whether 
      9   * inserted by the user or by software development tools
     10   * are owned by their respective copyright owners.
     11   *
     12   * COPYRIGHT(c) 2017 STMicroelectronics
     13   *
     14   * Redistribution and use in source and binary forms, with or without modification,
     15   * are permitted provided that the following conditions are met:
     16   *   1. Redistributions of source code must retain the above copyright notice,
     17   *      this list of conditions and the following disclaimer.
     18   *   2. Redistributions in binary form must reproduce the above copyright notice,
     19   *      this list of conditions and the following disclaimer in the documentation
     20   *      and/or other materials provided with the distribution.
     21   *   3. Neither the name of STMicroelectronics nor the names of its contributors
     22   *      may be used to endorse or promote products derived from this software
     23   *      without specific prior written permission.
     24   *
     25   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     26   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     27   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     28   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
     29   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     30   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
     31   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
     32   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
     33   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     34   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     35   *
     36   ******************************************************************************
     37   */
     38 /* Includes ------------------------------------------------------------------*/
     39 #include "main.h"
     40 #include "stm32f1xx_hal.h"
     41 
     42 /* USER CODE BEGIN Includes */
     43 
     44 /* USER CODE END Includes */
     45 
     46 /* Private variables ---------------------------------------------------------*/
     47 UART_HandleTypeDef huart1;
     48 UART_HandleTypeDef huart3;
     49 
     50 /* USER CODE BEGIN PV */
     51 /* Private variables ---------------------------------------------------------*/
     52 
     53 /* USER CODE END PV */
     54 
     55 /* Private function prototypes -----------------------------------------------*/
     56 void SystemClock_Config(void);
     57 static void MX_GPIO_Init(void);
     58 static void MX_USART1_UART_Init(void);
     59 static void MX_USART3_UART_Init(void);
     60 
     61 /* USER CODE BEGIN PFP */
     62 /* Private function prototypes -----------------------------------------------*/
     63 
     64 /* USER CODE END PFP */
     65 
     66 /* USER CODE BEGIN 0 */
     67 
     68 /* USER CODE END 0 */
     69 
     70 int main(void)
     71 {
     72 
     73   /* USER CODE BEGIN 1 */
     74 
     75   /* USER CODE END 1 */
     76 
     77   /* MCU Configuration----------------------------------------------------------*/
     78 
     79   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
     80   HAL_Init();
     81 
     82   /* USER CODE BEGIN Init */
     83 
     84   /* USER CODE END Init */
     85 
     86   /* Configure the system clock */
     87   SystemClock_Config();
     88 
     89   /* USER CODE BEGIN SysInit */
     90 
     91   /* USER CODE END SysInit */
     92 
     93   /* Initialize all configured peripherals */
     94   MX_GPIO_Init();
     95   MX_USART1_UART_Init();
     96   MX_USART3_UART_Init();
     97 
     98   /* USER CODE BEGIN 2 */
     99     //熄灭三个LED灯
    100     HAL_GPIO_WritePin(GPIOB, 
    101     GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_5, 1);
    102     
    103     HAL_UART_Transmit(&huart1,
    104     "WIFI配置...
    ",12,1000);
    105     
    106     //数组用来存放串口接收的数据
    107     uint8_t rec[100] = {0};
    108     //WIFI使能 PB8 = 1
    109     HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,1);
    110     //WIFI取消复位 PB9 = 1
    111         HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,1);
    112     HAL_Delay(1000);
    113     //测试AT指令
    114     HAL_UART_Transmit(&huart3,"AT
    ",4,1000);
    115     HAL_UART_Receive(&huart3,rec,20,2000);
    116     HAL_UART_Transmit(&huart1,rec,20,1000);
    117     
    118     /*设置工作方式指令:AT+CWMODE=mode
    119         mode = 1是station模式
    120         mode = 2是AP模式
    121         mode = 3是station+AP模式
    122     */
    123     HAL_UART_Transmit(&huart3,"AT+CWMODE=2
    ",13,1000);
    124     HAL_UART_Receive(&huart3,rec,20,2000);
    125     HAL_UART_Transmit(&huart1,rec,20,1000);
    126     
    127     /*设置为单路连接模式:AT+CIPMUX=mode
    128         mode = 0为单路连接
    129         mode = 1为多路连接
    130     */
    131     HAL_UART_Transmit(&huart3,"AT+CIPMUX=1
    ",
    132     13,1000);
    133     HAL_UART_Receive(&huart3,rec,20,2000);
    134     HAL_UART_Transmit(&huart1,rec,20,1000);
    135     
    136 
    137     /*获取本机IP地址:AT+CIFS
    138     */
    139     HAL_UART_Transmit(&huart3,
    140     "AT+CIFSR
    ",
    141     10,1000);
    142     HAL_UART_Receive(&huart3,rec,50,2000);
    143     HAL_UART_Transmit(&huart1,rec,50,1000);
    144 
    145     /*发出WIFI热点指令:
    146     AT+CWSAP=<ssid>,<pwd>,<chl>,<ecn>
    147     ssid是热点名称
    148     pwd是密码
    149     ch1是通道号
    150     ecn是加密方式  
    151         0 OPEN
    152         1 WEP
    153         2 WPA_PSK
    154         3 WPA2_PSK
    155         4 WPA_WPA2_PSK
    156     */
    157     HAL_UART_Transmit(&huart3,
    158     "AT+CWSAP="发出WIFI","zzaaqq11",1,3
    ",
    159     36,1000);
    160     HAL_UART_Receive(&huart3,rec,50,2000);
    161     HAL_UART_Transmit(&huart1,rec,50,1000);
    162     HAL_Delay(500);
    163     
    164   /* USER CODE END 2 */
    165 
    166   /* Infinite loop */
    167   /* USER CODE BEGIN WHILE */
    168   while (1)
    169   {
    170   /* USER CODE END WHILE */
    171 
    172   /* USER CODE BEGIN 3 */
    173 
    174   }
    175   /* USER CODE END 3 */
    176 
    177 }
    178 
    179 /** System Clock Configuration
    180 */
    181 void SystemClock_Config(void)
    182 {
    183 
    184   RCC_OscInitTypeDef RCC_OscInitStruct;
    185   RCC_ClkInitTypeDef RCC_ClkInitStruct;
    186 
    187     /**Initializes the CPU, AHB and APB busses clocks 
    188     */
    189   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
    190   RCC_OscInitStruct.HSIState = RCC_HSI_ON;
    191   RCC_OscInitStruct.HSICalibrationValue = 16;
    192   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
    193   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
    194   {
    195     _Error_Handler(__FILE__, __LINE__);
    196   }
    197 
    198     /**Initializes the CPU, AHB and APB busses clocks 
    199     */
    200   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
    201                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
    202   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
    203   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
    204   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
    205   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
    206 
    207   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
    208   {
    209     _Error_Handler(__FILE__, __LINE__);
    210   }
    211 
    212     /**Configure the Systick interrupt time 
    213     */
    214   HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
    215 
    216     /**Configure the Systick 
    217     */
    218   HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
    219 
    220   /* SysTick_IRQn interrupt configuration */
    221   HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
    222 }
    223 
    224 /* USART1 init function */
    225 static void MX_USART1_UART_Init(void)
    226 {
    227 
    228   huart1.Instance = USART1;
    229   huart1.Init.BaudRate = 9600;
    230   huart1.Init.WordLength = UART_WORDLENGTH_8B;
    231   huart1.Init.StopBits = UART_STOPBITS_1;
    232   huart1.Init.Parity = UART_PARITY_NONE;
    233   huart1.Init.Mode = UART_MODE_TX_RX;
    234   huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
    235   huart1.Init.OverSampling = UART_OVERSAMPLING_16;
    236   if (HAL_UART_Init(&huart1) != HAL_OK)
    237   {
    238     _Error_Handler(__FILE__, __LINE__);
    239   }
    240 
    241 }
    242 
    243 /* USART3 init function */
    244 static void MX_USART3_UART_Init(void)
    245 {
    246 
    247   huart3.Instance = USART3;
    248   huart3.Init.BaudRate = 115200;
    249   huart3.Init.WordLength = UART_WORDLENGTH_8B;
    250   huart3.Init.StopBits = UART_STOPBITS_1;
    251   huart3.Init.Parity = UART_PARITY_NONE;
    252   huart3.Init.Mode = UART_MODE_TX_RX;
    253   huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
    254   huart3.Init.OverSampling = UART_OVERSAMPLING_16;
    255   if (HAL_UART_Init(&huart3) != HAL_OK)
    256   {
    257     _Error_Handler(__FILE__, __LINE__);
    258   }
    259 
    260 }
    261 
    262 /** Configure pins as 
    263         * Analog 
    264         * Input 
    265         * Output
    266         * EVENT_OUT
    267         * EXTI
    268 */
    269 static void MX_GPIO_Init(void)
    270 {
    271 
    272   GPIO_InitTypeDef GPIO_InitStruct;
    273 
    274   /* GPIO Ports Clock Enable */
    275   __HAL_RCC_GPIOB_CLK_ENABLE();
    276   __HAL_RCC_GPIOA_CLK_ENABLE();
    277 
    278   /*Configure GPIO pin Output Level */
    279   HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_5|WIFI_CMD_Pin 
    280                           |WIFI_RST_Pin, GPIO_PIN_RESET);
    281 
    282   /*Configure GPIO pins : PB0 PB1 PB5 WIFI_CMD_Pin 
    283                            WIFI_RST_Pin */
    284   GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_5|WIFI_CMD_Pin 
    285                           |WIFI_RST_Pin;
    286   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    287   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    288   HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
    289 
    290 }
    291 
    292 /* USER CODE BEGIN 4 */
    293 
    294 /* USER CODE END 4 */
    295 
    296 /**
    297   * @brief  This function is executed in case of error occurrence.
    298   * @param  None
    299   * @retval None
    300   */
    301 void _Error_Handler(char * file, int line)
    302 {
    303   /* USER CODE BEGIN Error_Handler_Debug */
    304   /* User can add his own implementation to report the HAL error return state */
    305   while(1) 
    306   {
    307   }
    308   /* USER CODE END Error_Handler_Debug */ 
    309 }
    310 
    311 #ifdef USE_FULL_ASSERT
    312 
    313 /**
    314    * @brief Reports the name of the source file and the source line number
    315    * where the assert_param error has occurred.
    316    * @param file: pointer to the source file name
    317    * @param line: assert_param error line source number
    318    * @retval None
    319    */
    320 void assert_failed(uint8_t* file, uint32_t line)
    321 {
    322   /* USER CODE BEGIN 6 */
    323   /* User can add his own implementation to report the file name and line number,
    324     ex: printf("Wrong parameters value: file %s on line %d
    ", file, line) */
    325   /* USER CODE END 6 */
    326 
    327 }
    328 
    329 #endif
    330 
    331 /**
    332   * @}
    333   */ 
    334 
    335 /**
    336   * @}
    337 */ 
    338 
    339 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
  • 相关阅读:
    python datetime,字符串,时间戳相互转换
    python在linux环境读取access数据库mdb文件
    ruby 随机字符串rand方法避坑
    gin 页面重定向
    go语言 goquery爬虫
    Rails项目防止时序攻击
    Authorization With Pundit
    Rails/ActiveRecord order by Array
    java线程池
    Java安全API
  • 原文地址:https://www.cnblogs.com/kinson/p/7920051.html
Copyright © 2020-2023  润新知