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

標題: 一個接收指令的簡單的stm32小程序 HAL庫 [打印本頁]

作者: 關山月    時間: 2018-8-18 16:41
標題: 一個接收指令的簡單的stm32小程序 HAL庫
一個接收指令的簡單的stm32小程序用的普中的板子 f103zeHAL庫的 軟件用的cubemx

單片機源程序如下:
  1. /* Includes ------------------------------------------------------------------*/
  2. #include "main.h"
  3. #include "stm32f1xx_hal.h"
  4. #include "tim.h"
  5. #include "usart.h"
  6. #include "gpio.h"

  7. /* USER CODE BEGIN Includes */
  8. #include "stdio.h"
  9. /* USER CODE END Includes */

  10. /* Private variables ---------------------------------------------------------*/

  11. /* USER CODE BEGIN PV */
  12. /* Private variables ---------------------------------------------------------*/
  13. int ch;
  14. /* USER CODE END PV */

  15. /* Private function prototypes -----------------------------------------------*/
  16. void SystemClock_Config(void);

  17. /* USER CODE BEGIN PFP */
  18. /* Private function prototypes -----------------------------------------------*/

  19. /* USER CODE END PFP */

  20. /* USER CODE BEGIN 0 */
  21. static void Show_Message(void)
  22. {
  23.   printf("\r\n   這是一個通過串口通信指令控制LED燈或蜂鳴器實驗 \n");
  24.   printf("指令對應如下:\n");
  25.   printf("   指令   ------      狀態(tài) \n");
  26.   printf("     1    ------    LED1翻轉 \n");
  27.   printf("     2    ------    LED2翻轉 \n");
  28.   printf("     3    ------    LED3翻轉 \n");
  29.   printf("     4    ------    蜂鳴器響 \n");
  30.   printf("     5    ------    蜂鳴器不響 \n");
  31. }
  32. /* USER CODE END 0 */

  33. /**
  34.   * @brief  The application entry point.
  35.   *
  36.   * @retval None
  37.   */
  38. int main(void)
  39. {
  40.   /* USER CODE BEGIN 1 */

  41.        
  42.   /* USER CODE END 1 */

  43.   /* MCU Configuration----------------------------------------------------------*/

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

  46.   /* USER CODE BEGIN Init */

  47.   /* USER CODE END Init */

  48.   /* Configure the system clock */
  49.   SystemClock_Config();

  50.   /* USER CODE BEGIN SysInit */

  51.   /* USER CODE END SysInit */

  52.   /* Initialize all configured peripherals */
  53.   MX_GPIO_Init();
  54.   MX_USART1_UART_Init();
  55.   MX_TIM3_Init();
  56.   /* USER CODE BEGIN 2 */

  57.   Show_Message();
  58.   /* USER CODE END 2 */

  59.   /* Infinite loop */
  60.   /* USER CODE BEGIN WHILE */
  61.   while (1)
  62.   {

  63.   /* USER CODE END WHILE */

  64.   /* USER CODE BEGIN 3 */
  65.   ch=getchar();
  66.   printf("接收到字符:%c\n",ch);
  67.                
  68.           /* 根據(jù)字符指令控制RGB彩燈顏色 */
  69.     switch(ch)
  70.     {
  71.                        
  72.       case '1':
  73.                HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_0); //LED1翻轉
  74.                break;
  75.       case '2':
  76.                HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_1); //LED2翻轉
  77.                break;
  78.       case '3':
  79.                HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_2); //LED3翻轉
  80.                break;
  81.       case '4':                                //蜂鳴器響
  82.                           
  83.                                        HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);
  84.                                 __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_2,50);
  85.                     break;
  86.       case '5':
  87.                HAL_TIM_PWM_Stop(&htim3,TIM_CHANNEL_2);  //蜂鳴器不響
  88.                break;
  89.       default:
  90.         /* 如果不是指定指令字符,打印提示信息 */
  91.         Show_Message();
  92.       break;
  93.     }       
  94.   }
  95.   /* USER CODE END 3 */

  96. }

  97. /**
  98.   * @brief System Clock Configuration
  99.   * @retval None
  100.   */
  101. void SystemClock_Config(void)
  102. {

  103.   RCC_OscInitTypeDef RCC_OscInitStruct;
  104.   RCC_ClkInitTypeDef RCC_ClkInitStruct;

  105.     /**Initializes the CPU, AHB and APB busses clocks
  106.     */
  107.   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  108.   RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  109.   RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
  110.   RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  111.   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  112.   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  113.   RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
  114.   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  115.   {
  116.     _Error_Handler(__FILE__, __LINE__);
  117.   }

  118.     /**Initializes the CPU, AHB and APB busses clocks
  119.     */
  120.   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  121.                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  122.   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  123.   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  124.   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
  125.   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

  126.   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
  127.   {
  128.     _Error_Handler(__FILE__, __LINE__);
  129.   }

  130.     /**Configure the Systick interrupt time
  131.     */
  132.   HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

  133.     /**Configure the Systick
  134.     */
  135.   HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

  136.   /* SysTick_IRQn interrupt configuration */
  137.   HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
  138. }

  139. /* USER CODE BEGIN 4 */
  140. int fputc(int ch, FILE *f)
  141. {
  142.   HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
  143.   return ch;
  144. }

  145. int fgetc(FILE * f)
  146. {
  147.   uint8_t ch = 0;
  148.   HAL_UART_Receive(&huart1,&ch, 1, 0xffff);
  149.   return ch;
  150. }
  151. /* USER CODE END 4 */

  152. /**
  153.   * @brief  This function is executed in case of error occurrence.
  154.   * @param  file: The file name as string.
  155.   * @param  line: The line in file as a number.
  156.   * @retval None
  157.   */
  158. void _Error_Handler(char *file, int line)
  159. {
  160.   /* USER CODE BEGIN Error_Handler_Debug */
  161.   /* User can add his own implementation to report the HAL error return state */
  162.   while(1)
  163.   {
  164.   }
  165.   /* USER CODE END Error_Handler_Debug */
  166. }

  167. #ifdef  USE_FULL_ASSERT
  168. ……………………

  169. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
control.rar (9.02 MB, 下載次數(shù): 13)











歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 依人成人 | 中文字幕一区二区三区四区不卡 | 亚洲精品在线看 | 国产精品久久久久久久7电影 | 91九色视频在线 | 国产欧美视频一区二区三区 | 国产精品久久国产精品久久 | 久久精品网 | 在线国产一区 | 三级黄色片在线播放 | 精品国产一区二区三区久久影院 | 中文字幕在线看人 | 亚洲综合色网 | 日韩在线综合 | 天天干b| 羞羞视频在线观看 | www.狠狠操| 狠狠狠色丁香婷婷综合久久五月 | 日韩欧美手机在线 | 色欧美综合 | 国产成人精品一区二 | 中文字幕在线二区 | 亚洲日本免费 | 欧美在线观看一区二区 | 国产欧美精品在线观看 | 亚洲免费一区二区 | 激情 一区 | 在线欧美视频 | 亚洲欧美日韩精品久久亚洲区 | 国产午夜在线观看 | 国产精品1 | japan21xxxxhd美女 日本欧美国产在线 | 欧美二区在线 | 国产精品自拍视频 | 免费人成在线观看网站 | 国产精品久久久久久久久 | 成人久久一区 | 久久大 | 欧美不卡 | 成人性视频免费网站 | 日韩欧美中文 |