[其他ST产品] 【STM32G4评测+02+MDK+Stm32cube +定时器】

[复制链接]
 楼主| dami 发表于 2021-3-27 18:19 | 显示全部楼层 |阅读模式
本帖最后由 dami 于 2021-3-27 18:20 编辑

【STM32G4评测+02+MDK+Stm32cube工程搞定多串口定时器】
1,打开Stm32cube,升级到最新的6.20。
2,配置板子为nucleo-STM32G491RE。
3,配置Tim3,时钟为内部时钟,(因为是选的板子所以串口一默认打开的,ld2也是配置好了的)。
    中断允许,设置好定时器时间.
4,生成代码。
5,用mdk打开。
6,工程中startup_stm32g491xx.s没加上所以编译有错。加上。
7,实验目标:通过定时器定时点亮和熄灭LD2。从串口1打印数据输出ld2的状态。
8,增加接收处理语句。  
  1. /* USER CODE END PFP */
  2. /* Private user code ---------------------------------------------------------*/
  3. /* USER CODE BEGIN 0 */
  4. uint32_t sent_tim1=0,sent_tim2=0;
  5. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
  6. {
  7.         if(htim == &htim3)
  8.         {
  9.                 if((sent_tim1++)>10000)
  10.                         sent_tim1 =0;
  11.                 if((sent_tim2++)>10000)
  12.                         sent_tim2 =0;
  13.         }
  14. }
  15. /* USER CODE END 0 */
  16. /**
  17.   * [url=home.php?mod=space&uid=247401]@brief[/url]  The application entry point.
  18.   * @retval int
  19.   */
  20. int main(void)
  21. {
  22.   /* USER CODE BEGIN 1 */

  23.   /* USER CODE END 1 */
  24.   /* MCU Configuration--------------------------------------------------------*/
  25.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  26.   HAL_Init();
  27.   /* USER CODE BEGIN Init */
  28.   /* USER CODE END Init */
  29.   /* Configure the system clock */
  30.   SystemClock_Config();
  31.   /* USER CODE BEGIN SysInit */
  32.   /* USER CODE END SysInit */
  33.   /* Initialize all configured peripherals */
  34.   MX_GPIO_Init();
  35.   MX_I2C1_Init();
  36.   MX_LPUART1_UART_Init();
  37.   MX_UART4_Init();
  38.   MX_USART3_UART_Init();
  39.   MX_TIM3_Init();
  40.   /* USER CODE BEGIN 2 */
  41.   HAL_TIM_Base_Start_IT(&htim3);
  42.         uint8_t buf_T[]={"ld2 on:\n\r"};
  43.         uint8_t buf_H[]={"ld2 off :\n\r"};
  44.   /* USER CODE END 2 */
  45.   /* Infinite loop */
  46.   /* USER CODE BEGIN WHILE */
  47.   while (1)
  48.   {
  49.           static uint8_t first_f1=0;
  50.                 if(sent_tim1 > 8000)
  51.                 {
  52.                         sent_tim1 =0;first_f1 =0;
  53.                         HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);
  54.                         HAL_UART_Transmit(&hlpuart1,buf_T,sizeof(buf_T),0xffff);
  55.                 }
  56.                 else
  57.                 {
  58.                         if((sent_tim1 > 4000)&&(first_f1==0))
  59.                         {
  60.                                 first_f1 =1;
  61.                                 HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET);
  62.               HAL_UART_Transmit(&hlpuart1,buf_H,sizeof(buf_H),0xffff);
  63.                         }
  64.                 }        
  65.     /* USER CODE END WHILE */
  66.     /* USER CODE BEGIN 3 */
  67.   }
  68.   /* USER CODE END 3 */
  69. }
9,编译,连接板子下载程序。10,用putty观察串口定时交替发出ld2 on,ld2 off同时ld亮灭。
无法上传图片,见谅
                       -----------------------完--------------------------------


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

本版积分规则

66

主题

1077

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部

66

主题

1077

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部