跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1M系列
  4. YTM32B1MD1 Uart中断接收DEMO修改的程序会进入DefaultISR ,用官方DEMO配置也是一样的

YTM32B1MD1 Uart中断接收DEMO修改的程序会进入DefaultISR ,用官方DEMO配置也是一样的

已定时 已固定 已锁定 已移动 已解决 YTM32B1M系列
6 帖子 3 发布者 1.6k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • FollowF 离线
    FollowF 离线
    Follow
    写于 最后由 编辑
    #1

    9c490505-3352-4ef5-a5d6-ccbf3bc7d7-875d-410a-bd78-b718a76e5605-1741750184912.png f804c4dadb-image.png
    4c0898e1-fbcc-4203-a2e0-a22a8866a39d-1741750160584.png
    #include "sdk_project_config.h"
    /* Includes ------------------------------------------------------------------*/

    /* Private includes ----------------------------------------------------------/
    /
    USER CODE BEGIN Includes /
    /
    USER CODE END Includes */

    /* Private typedef -----------------------------------------------------------/
    /
    USER CODE BEGIN PTD /
    /
    USER CODE END PTD */

    /* Private define ------------------------------------------------------------/
    /
    USER CODE BEGIN PD /
    #define UART_TX_RX_SIZE (8)
    #define INST_UART (0)
    /
    USER CODE END PD */

    /* Private macro -------------------------------------------------------------/
    /
    USER CODE BEGIN PM /
    /
    USER CODE END PM */

    /* Private variables ---------------------------------------------------------/
    /
    USER CODE BEGIN PV /
    uint8_t g_RecData[UART_TX_RX_SIZE];
    volatile bool g_rxComplete = false;
    volatile bool g_txComplete = false;
    /
    USER CODE END PV */

    /* Private function declare --------------------------------------------------/
    /
    USER CODE BEGIN PFDC /
    /
    USER CODE END PFDC */
    static void Board_Init(void);

    /* Private user code ---------------------------------------------------------/
    /
    USER CODE BEGIN 0 /
    /
    Uart rx callback function */
    void Uart_RxCallback(void *LINFLexDState, uart_event_t event, void *userData)
    {
    (void)LINFLexDState;
    (void)userData;
    if (event == UART_EVENT_END_TRANSFER)
    {
    g_rxComplete = true;
    }
    }

    /* Uart tx callback function */
    void Uart_TxCallback(void *LINFLexDState, uart_event_t event, void *userData)
    {
    (void)LINFLexDState;
    (void)userData;
    if (event == UART_EVENT_END_TRANSFER)
    {
    g_txComplete = true;
    }
    }

    /* USER CODE END 0 */

    /**

    • @brief The application entry point.

    • @retval int
      /
      int main(void)
      {
      /
      USER CODE BEGIN 1 /
      status_t status = STATUS_SUCCESS;
      /
      USER CODE END 1 /
      Board_Init();
      /
      USER CODE BEGIN 2 */
      PRINTF("Build %s %s\r\n", DATE, TIME);
      PRINTF("Linflexd Uart Interrupt Demo!\r\n");

      LINFlexD_UART_DRV_InstallRxCallback(INST_UART, Uart_RxCallback, NULL);
      LINFlexD_UART_DRV_InstallTxCallback(INST_UART, Uart_TxCallback, NULL);
      /* USER CODE END 2 */

      /* Infinite loop /
      /
      USER CODE BEGIN WHILE */
      while (1)
      {

       status |= LINFlexD_UART_DRV_ReceiveData(INST_UART, g_RecData, UART_TX_RX_SIZE);
       PRINTF("\r\n g_RecData: %c",g_RecData);
       /* Wait for reception to complete */
      // while (!g_rxComplete)
      //     ;
       /* Send received data */
      // status |= LINFlexD_UART_DRV_SendData(INST_UART, g_RecData, UART_TX_RX_SIZE);
       /* Wait for sending to complete */
      // while (!g_txComplete)
      //     ;
      // PRINTF("\r\n g_RecData: %c",g_RecData);
      

      // g_txComplete = false;
      // g_rxComplete = false;

       if (status != STATUS_SUCCESS)
       {
           //break;
       }
       /* USER CODE END WHILE */
       /* USER CODE BEGIN 3 */
      

      }
      /* USER CODE END 3 */
      }

    static void Board_Init(void)
    {
    CLOCK_SYS_Init(g_clockManConfigsArr,CLOCK_MANAGER_CONFIG_CNT,g_clockManCallbacksArr,CLOCK_MANAGER_CALLBACK_CNT);
    CLOCK_SYS_UpdateConfiguration(CLOCK_MANAGER_ACTIVE_INDEX,CLOCK_MANAGER_POLICY_AGREEMENT);
    PINS_DRV_Init(NUM_OF_CONFIGURED_PINS0,g_pin_mux_InitConfigArr0);
    UTILITY_PRINT_Init();
    }

    /* USER CODE BEGIN 4 /
    /
    USER CODE END 4 */
    ed3aa81a-0738-4786-b983-9bf3494a7a2e-1741750399007.png 程序跑到箭头所指的地方就进入了DefaultISRLinflexd_Uart_Interrupt_Demo.yct yct配置工程已经提交

    1 条回复 最后回复
    0
    • FollowF 离线
      FollowF 离线
      Follow
      在 回复了 run 最后由 编辑
      #6

      run #include "sdk_project_config.h"
      /* Includes ------------------------------------------------------------------*/

      /* Private includes ----------------------------------------------------------/
      /
      USER CODE BEGIN Includes /
      /
      USER CODE END Includes */

      /* Private typedef -----------------------------------------------------------/
      /
      USER CODE BEGIN PTD /
      /
      USER CODE END PTD */

      /* Private define ------------------------------------------------------------/
      /
      USER CODE BEGIN PD /
      #define UART_TX_RX_SIZE (8)
      #define INST_UART (0)
      /
      USER CODE END PD */

      /* Private macro -------------------------------------------------------------/
      /
      USER CODE BEGIN PM /
      /
      USER CODE END PM */

      /* Private variables ---------------------------------------------------------/
      /
      USER CODE BEGIN PV */
      uint8_t g_RecData[UART_TX_RX_SIZE];

      #define UART_RX_LENGTH (20)
      volatile bool g_rxComplete = false;
      volatile bool g_txComplete = false;
      uint8_t g_uartRxBuffer[UART_RX_LENGTH] = { 0 };
      /* USER CODE END PV */

      /* Private function declare --------------------------------------------------/
      /
      USER CODE BEGIN PFDC /
      /
      USER CODE END PFDC */
      static void Board_Init(void);

      /* Private user code ---------------------------------------------------------/
      /
      USER CODE BEGIN 0 /
      /
      Uart rx callback function */
      void uart_RX_Callback(void *uartState, uart_event_t event, void userData)
      {
      (void)userData;
      (void)uartState;
      if (UART_EVENT_END_TRANSFER == event)
      {
      /
      Note: Debug output inserted into interrupt routine for demo clarity. Might introduce delay. /
      PRINTF("Data Received: ");
      for (int i = 0; i < UART_RX_LENGTH; i++)
      {
      PRINTF("%x ", g_uartRxBuffer[i]);
      }
      PRINTF("\n\r");
      }
      else if (UART_EVENT_ERROR == event)
      {
      /
      error happened */
      }
      }

      void uart_TX_Callback(void *uartState, uart_event_t event, void userData)
      {
      (void)userData;
      (void)uartState;
      if (UART_EVENT_END_TRANSFER == event)
      {
      /
      Note: Debug output inserted into interrupt routine for demo clarity. Might introduce delay. */
      PRINTF("Data sent.\n");
      }
      }

      /* USER CODE END 0 */

      /**

      • @brief The application entry point.

      • @retval int
        /
        int main(void)
        {
        /
        USER CODE BEGIN 1 /
        status_t status = STATUS_SUCCESS;
        /
        USER CODE END 1 /
        Board_Init();
        /
        USER CODE BEGIN 2 */
        PRINTF("Build %s %s\r\n", DATE, TIME);
        PRINTF("Linflexd Uart Interrupt Demo!\r\n");

        LINFlexD_UART_DRV_InstallRxCallback(INST_UART, uart_RX_Callback, NULL);
        LINFlexD_UART_DRV_InstallTxCallback(INST_UART, uart_TX_Callback, NULL);
        /* USER CODE END 2 */

        /* Infinite loop /
        /
        USER CODE BEGIN WHILE */
        while (1)
        {

         status |= LINFlexD_UART_DRV_ReceiveData(INST_UART, g_RecData, UART_TX_RX_SIZE);
         //PRINTF("\r\n g_RecData: %c",g_RecData);
         /* Wait for reception to complete */
        // while (!g_rxComplete)
        //     ;
         /* Send received data */
        // status |= LINFlexD_UART_DRV_SendData(INST_UART, g_RecData, UART_TX_RX_SIZE);
         /* Wait for sending to complete */
        // while (!g_txComplete)
        //     ;
        // PRINTF("\r\n g_RecData: %c",g_RecData);
        

        // g_txComplete = false;
        // g_rxComplete = false;

         if (status != STATUS_SUCCESS)
         {
             //break;
         }
         /* USER CODE END WHILE */
         /* USER CODE BEGIN 3 */
        

        }
        /* USER CODE END 3 */
        }

      static void Board_Init(void)
      {
      CLOCK_SYS_Init(g_clockManConfigsArr,CLOCK_MANAGER_CONFIG_CNT,g_clockManCallbacksArr,CLOCK_MANAGER_CALLBACK_CNT);
      CLOCK_SYS_UpdateConfiguration(CLOCK_MANAGER_ACTIVE_INDEX,CLOCK_MANAGER_POLICY_AGREEMENT);
      PINS_DRV_Init(NUM_OF_CONFIGURED_PINS0,g_pin_mux_InitConfigArr0);
      UTILITY_PRINT_Init();
      LINFlexD_UART_DRV_Init(0, &linflexd_uart_config0_State, &linflexd_uart_config0);
      }
      程序正常跑起来的,没有进入DefaultISR了,串口是有发送数据的,用逻辑分析仪是能看到的,但是就是接收不到,麻烦帮我看看我的YCT和代码,哪个地方配置错了,谢谢Linflexd_Uart_Interrupt_Demo.yct

      1 条回复 最后回复
      -2
      • FollowF 离线
        FollowF 离线
        Follow
        写于 最后由 编辑
        #2

        fc99cccd-57cd-4fdb-a6a5-7098dae65036-1741750740515.png
        b8c327cb-5826-4d82-a472-b0bd70ad23b2-1741750726034.png
        a7f6cddc-9f62-4303-a576-ee0eef77cc4f-1741750800274.png 时钟配置补充

        1 条回复 最后回复
        0
        • DigaD 离线
          DigaD 离线
          Diga
          写于 最后由 编辑
          #3

          NULL 是空指针,不会进这里的。
          是进的 HardFault?Hardfault 状态是什么

          FollowF 1 条回复 最后回复
          0
          • FollowF 离线
            FollowF 离线
            Follow
            在 回复了 Diga 最后由 编辑
            #4

            Diga 在 YTM32B1MD1 Uart中断接收DEMO修改的程序会进入DefaultISR ,用官方DEMO配置也是一样的 中说:

            HardFault

            是进入了DefaultISR,麻烦你帮我看看我的串口的驱动配置哪里有问题,谢谢

            1 条回复 最后回复
            0
            • runR 离线
              runR 离线
              run YunTu
              写于 最后由 run 编辑
              #5

              在LINFlexD_UART_DRV_InstallRxCallback前,需要确保 LINFlexD_UART0 已经Init了。
              如果进入HardFault,其行为默认也是DefaultISR。

              FollowF 1 条回复 最后回复
              0
              • FollowF 离线
                FollowF 离线
                Follow
                在 回复了 run 最后由 编辑
                #6

                run #include "sdk_project_config.h"
                /* Includes ------------------------------------------------------------------*/

                /* Private includes ----------------------------------------------------------/
                /
                USER CODE BEGIN Includes /
                /
                USER CODE END Includes */

                /* Private typedef -----------------------------------------------------------/
                /
                USER CODE BEGIN PTD /
                /
                USER CODE END PTD */

                /* Private define ------------------------------------------------------------/
                /
                USER CODE BEGIN PD /
                #define UART_TX_RX_SIZE (8)
                #define INST_UART (0)
                /
                USER CODE END PD */

                /* Private macro -------------------------------------------------------------/
                /
                USER CODE BEGIN PM /
                /
                USER CODE END PM */

                /* Private variables ---------------------------------------------------------/
                /
                USER CODE BEGIN PV */
                uint8_t g_RecData[UART_TX_RX_SIZE];

                #define UART_RX_LENGTH (20)
                volatile bool g_rxComplete = false;
                volatile bool g_txComplete = false;
                uint8_t g_uartRxBuffer[UART_RX_LENGTH] = { 0 };
                /* USER CODE END PV */

                /* Private function declare --------------------------------------------------/
                /
                USER CODE BEGIN PFDC /
                /
                USER CODE END PFDC */
                static void Board_Init(void);

                /* Private user code ---------------------------------------------------------/
                /
                USER CODE BEGIN 0 /
                /
                Uart rx callback function */
                void uart_RX_Callback(void *uartState, uart_event_t event, void userData)
                {
                (void)userData;
                (void)uartState;
                if (UART_EVENT_END_TRANSFER == event)
                {
                /
                Note: Debug output inserted into interrupt routine for demo clarity. Might introduce delay. /
                PRINTF("Data Received: ");
                for (int i = 0; i < UART_RX_LENGTH; i++)
                {
                PRINTF("%x ", g_uartRxBuffer[i]);
                }
                PRINTF("\n\r");
                }
                else if (UART_EVENT_ERROR == event)
                {
                /
                error happened */
                }
                }

                void uart_TX_Callback(void *uartState, uart_event_t event, void userData)
                {
                (void)userData;
                (void)uartState;
                if (UART_EVENT_END_TRANSFER == event)
                {
                /
                Note: Debug output inserted into interrupt routine for demo clarity. Might introduce delay. */
                PRINTF("Data sent.\n");
                }
                }

                /* USER CODE END 0 */

                /**

                • @brief The application entry point.

                • @retval int
                  /
                  int main(void)
                  {
                  /
                  USER CODE BEGIN 1 /
                  status_t status = STATUS_SUCCESS;
                  /
                  USER CODE END 1 /
                  Board_Init();
                  /
                  USER CODE BEGIN 2 */
                  PRINTF("Build %s %s\r\n", DATE, TIME);
                  PRINTF("Linflexd Uart Interrupt Demo!\r\n");

                  LINFlexD_UART_DRV_InstallRxCallback(INST_UART, uart_RX_Callback, NULL);
                  LINFlexD_UART_DRV_InstallTxCallback(INST_UART, uart_TX_Callback, NULL);
                  /* USER CODE END 2 */

                  /* Infinite loop /
                  /
                  USER CODE BEGIN WHILE */
                  while (1)
                  {

                   status |= LINFlexD_UART_DRV_ReceiveData(INST_UART, g_RecData, UART_TX_RX_SIZE);
                   //PRINTF("\r\n g_RecData: %c",g_RecData);
                   /* Wait for reception to complete */
                  // while (!g_rxComplete)
                  //     ;
                   /* Send received data */
                  // status |= LINFlexD_UART_DRV_SendData(INST_UART, g_RecData, UART_TX_RX_SIZE);
                   /* Wait for sending to complete */
                  // while (!g_txComplete)
                  //     ;
                  // PRINTF("\r\n g_RecData: %c",g_RecData);
                  

                  // g_txComplete = false;
                  // g_rxComplete = false;

                   if (status != STATUS_SUCCESS)
                   {
                       //break;
                   }
                   /* USER CODE END WHILE */
                   /* USER CODE BEGIN 3 */
                  

                  }
                  /* USER CODE END 3 */
                  }

                static void Board_Init(void)
                {
                CLOCK_SYS_Init(g_clockManConfigsArr,CLOCK_MANAGER_CONFIG_CNT,g_clockManCallbacksArr,CLOCK_MANAGER_CALLBACK_CNT);
                CLOCK_SYS_UpdateConfiguration(CLOCK_MANAGER_ACTIVE_INDEX,CLOCK_MANAGER_POLICY_AGREEMENT);
                PINS_DRV_Init(NUM_OF_CONFIGURED_PINS0,g_pin_mux_InitConfigArr0);
                UTILITY_PRINT_Init();
                LINFlexD_UART_DRV_Init(0, &linflexd_uart_config0_State, &linflexd_uart_config0);
                }
                程序正常跑起来的,没有进入DefaultISR了,串口是有发送数据的,用逻辑分析仪是能看到的,但是就是接收不到,麻烦帮我看看我的YCT和代码,哪个地方配置错了,谢谢Linflexd_Uart_Interrupt_Demo.yct

                1 条回复 最后回复
                -2
                • ,FrankieF Frankie 将这个主题转为问答主题
                • ,FrankieF Frankie 将这个主题标记为已解决

              • 云途开发生态介绍

                快速上手云途开发生态

              • 云途论坛规则/Yuntu Forum Rules

                发帖前请查看

              • YT CONFIG TOOL调查问卷

                帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

              • can
                25
                demo
                22
                lin stack
                13
                uds
                13
                md14
                6
                yt-link
                6
                fbl
                5
                adc模块
                4
                Online Users
                • 登录

                • 登录或注册以进行搜索。
                • 第一个帖子
                  最后一个帖子
                0
                • 版块
                • 最新
                • 标签
                • 热门