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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3858|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

一個(gè)接收指令的簡單的stm32小程序 HAL庫

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:334372 發(fā)表于 2018-8-18 16:41 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
一個(gè)接收指令的簡單的stm32小程序用的普中的板子 f103zeHAL庫的 軟件用的cubemx

單片機(jī)源程序如下:
  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   這是一個(gè)通過串口通信指令控制LED燈或蜂鳴器實(shí)驗(yàn) \n");
  24.   printf("指令對(duì)應(yīng)如下:\n");
  25.   printf("   指令   ------      狀態(tài) \n");
  26.   printf("     1    ------    LED1翻轉(zhuǎn) \n");
  27.   printf("     2    ------    LED2翻轉(zhuǎn) \n");
  28.   printf("     3    ------    LED3翻轉(zhuǎn) \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翻轉(zhuǎn)
  74.                break;
  75.       case '2':
  76.                HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_1); //LED2翻轉(zhuǎn)
  77.                break;
  78.       case '3':
  79.                HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_2); //LED3翻轉(zhuǎn)
  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. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

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






分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久午夜视频 | 99精品欧美一区二区三区 | 国内精品久久久久久久 | 久久久久一区二区三区 | 日韩视频一区二区 | 91免费版在线观看 | 日韩亚洲一区二区 | 色精品 | 精品国产一区二区三区久久久久久 | 亚洲成人中文字幕 | 中文字幕一区二区三区在线观看 | 欧美电影大全 | 亚洲成人精品国产 | 国产精品毛片 | 日本在线免费视频 | 精品欧美一区二区三区久久久 | 黄色毛片在线看 | 欧美一区二区三区在线免费观看 | 亚洲精品欧美 | 性色av网站| 日韩精品成人 | 欧美日韩亚洲三区 | 中国一级特黄真人毛片免费观看 | 日本aⅴ中文字幕 | 伦理午夜电影免费观看 | 久久久久网站 | 亚洲精品自在在线观看 | 国产成人在线一区二区 | 日韩免费一级 | 午夜精品一区二区三区三上悠亚 | 国产91在线精品 | 国产免费一区二区 | 天堂影院av | 久久久久国产精品一区二区 | 成人午夜电影在线观看 | 在线观看中文字幕 | 亚洲综合小视频 | 亚欧精品 | 国产精品久久久久久久久久 | 九色国产| 精品一区二区三区四区 |