导航

    Freqchip开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 最新
    1. 主页
    2. zxy
    Z
    • 继续与 zxy 聊天
    • 开始与 zxy 的新会话
    • 举报资料
    • 资料
    • 关注
    • 粉丝
    • 屏蔽
    • 主题
    • 帖子
    • 最佳
    • 群组

    zxy

    @zxy

    0
    声望
    52
    帖子
    273
    资料浏览
    0
    粉丝
    0
    关注
    注册时间 最后登录

    zxy 关注

    zxy 发布的帖子

    • RE: 程序在heap_mem_alloc中死机

      @zxy ram空间应该不止这些啊

      发布在 FR303x
      Z
      zxy
    • RE: 程序在heap_mem_alloc中死机

      @zxy configTOTAL_HEAP_SIZE分配24k,configTOTAL_BTDM_HEAP_SIZE就最多只能分配11k了,否则就会报错

      发布在 FR303x
      Z
      zxy
    • 程序在heap_mem_alloc中死机

      0_1763032964232_e52cae26-f6bc-4555-a047-a49300d36b9b-image.png
      请问程序在这个地方死机该修改什么值

      发布在 FR303x
      Z
      zxy
    • RE: 堆栈溢出

      @zr .\components\toolchain\armcc\fr101x_flash.sct: Error: L6388E: ScatterAssert expression ((ImageLength(PATCH_TABLE) + ImageLength(HOST_DATA) + ImageLength(ER_RW) + ImageLength(ER_RW_1)) <= 0xe380) failed on line 37 : (0xf378 <= 0xe380)
      这是报错信息,heap_size分了24 * 1024,btdm_size分了16 * 1024,小于ram空间的呀

      发布在 FR303x
      Z
      zxy
    • RE: 堆栈溢出

      @zr 0_1762774997503_147e762e-534c-4eff-b7d1-030d2e1ef403-image.png
      我把这个值改大就可以了是吗

      发布在 FR303x
      Z
      zxy
    • RE: 串口中断异常,一直进中断

      @zr #include "user_driver_uart.h"
      #include "user_config.h"

      #define UART_DRIVER_TASK_MS (TASK_HIGH_SPEED_MS)

      static void usr_uart_get_data(UART_HandleTypeDef *huart);
      extern void uart_nvic_enable(UART_UserTypeDef_t handle);
      extern struct_UART_t
      uart_get_reg_addr(UART_UserTypeDef_t *handle);

      void usr_uart_IRQHandler(UART_UserTypeDef_t user_uart)
      {
      switch (__UART_INT_GET_ID(user_uart->uart->UARTx))
      {
      case INT_INDEX_TXE:
      {
      /
      Data transit end /
      if (user_uart->uart->u32_TxCount >= user_uart->uart->u32_TxSize)
      {
      if (__UART_IS_TxFIFO_EMPTY(user_uart->uart->UARTx))
      {
      GLOBAL_INT_DISABLE();
      __UART_INT_TXE_DISABLE(user_uart->uart->UARTx);
      GLOBAL_INT_RESTORE();
      user_uart->frame->frame_send_flag = true;
      }
      }
      else
      {
      /
      UART_FIFO_ENABLE /
      if (__UART_IS_FIFO_Enable(user_uart->uart))
      {
      /
      Until TxFIFO full /
      while (!__UART_IS_TxFIFO_FULL(user_uart->uart->UARTx))
      {
      user_uart->uart->UARTx->DATA_DLL.DATA = user_uart->uart->p_TxData[user_uart->uart->u32_TxCount++];
      /
      Data transit end */
      if (user_uart->uart->u32_TxCount >= user_uart->uart->u32_TxSize)
      {
      if (__UART_IS_TxFIFO_EMPTY(user_uart->uart->UARTx))
      {
      GLOBAL_INT_DISABLE();
      __UART_INT_TXE_DISABLE(user_uart->uart->UARTx);
      GLOBAL_INT_RESTORE();
      user_uart->frame->frame_send_flag = true;
      }
      break;
      }
      }
      }
      else
      {
      user_uart->uart->UARTx->DATA_DLL.DATA = user_uart->uart->p_TxData[user_uart->uart->u32_TxCount++];
      }
      }
      break;
      }
      case INT_INDEX_RX:
      case INT_INDEX_RX_TOUT:
      {
      user_uart->frame->frame_recv_flag = true;
      user_uart->frame->frame_interval_cnt = 0;
      usr_uart_get_data(user_uart->uart);
      break;
      }
      default:
      {
      volatile REG_USR_t usr_status = user_uart->uart->UARTx->USR;
      break;
      }
      }
      }

      void usr_uart_task(UART_UserTypeDef_t *user_uart)
      {
      if (user_uart->frame->frame_recv_flag == true)
      {
      user_uart->frame->frame_interval_cnt++;
      if (user_uart->frame->frame_interval_cnt >= (user_uart->frame->frame_interval_ms / UART_DRIVER_TASK_MS))
      {
      user_uart->frame->frame_interval_cnt = 0;
      user_uart->frame->frame_recv_flag = false;
      usr_uart_get_data(user_uart->uart);
      GLOBAL_INT_DISABLE();
      __UART_INT_RX_DISABLE(user_uart->uart->UARTx);
      GLOBAL_INT_RESTORE();
      if (user_uart->uart->RxCpltCallback != NULL)
      {
      user_uart->uart->RxCpltCallback(user_uart->uart);
      }
      user_uart->uart->u32_RxCount = 0;
      GLOBAL_INT_DISABLE();
      __UART_INT_RX_ENABLE(user_uart->uart->UARTx);
      GLOBAL_INT_RESTORE();
      }
      }
      if (user_uart->frame->frame_send_flag == true)
      {
      if (user_uart->uart->TxCpltCallback != NULL)
      {
      user_uart->uart->TxCpltCallback(user_uart->uart);
      }
      user_uart->uart->b_TxBusy = false;
      user_uart->frame->frame_send_flag = false;
      }
      }

      void uart_driver_attr_init(UART_UserTypeDef_t *handle, uint32_t baudRate)
      {
      handle->uart->UARTx = uart_get_reg_addr(handle);
      handle->uart->Init.BaudRate = baudRate;
      handle->uart->Init.DataLength = UART_DATA_LENGTH_8BIT;
      handle->uart->Init.StopBits = UART_STOPBITS_1;
      handle->uart->Init.Parity = UART_PARITY_NONE;
      handle->uart->Init.FIFO_Mode = UART_FIFO_ENABLE;
      handle->uart->TxCpltCallback = NULL;
      handle->uart->RxCpltCallback = NULL;
      uart_init(handle->uart);
      __UART_RxFIFO_THRESHOLD(handle->uart, 2);
      __UART_INT_RX_ENABLE(handle->uart->UARTx);
      uart_nvic_enable(handle);
      }

      void uart_driver_start_receive(UART_UserTypeDef_t *handle,
      uint8_t *p_data,
      uint16_t max_byte_num,
      void (*UsrRxCpltCallback)(struct __UART_HandleTypeDef *huart))
      {
      handle->uart->RxCpltCallback = UsrRxCpltCallback;
      uart_receive_IT(handle->uart, p_data, max_byte_num);
      }

      static void usr_uart_get_data(UART_HandleTypeDef *huart)
      {
      while (huart->UARTx->LSR.LSR_BIT.DR)
      {
      huart->p_RxData[huart->u32_RxCount++] = huart->UARTx->DATA_DLL.DATA;
      }
      }

      现在是反复进入那个超时的case里,寄存器的状态在上面贴出来了

      发布在 FR303x
      Z
      zxy
    • RE: 堆栈溢出

      @zr 我去改这个东西是因为我在连接成功后就一直周期的获取RSSI,然后在这期间只要主机向我发起配对就会进入这个地方,这种情况应该改哪个大小呢

      0_1762774079722_1117dfd2-40fa-4743-be40-e6b7c011e6d6-image.png

      发布在 FR303x
      Z
      zxy
    • 串口中断异常,一直进中断

      0_1762773328356_bc9eeeea-537b-412a-a420-3db699699dfe-1762772913109_ecebe42d0ab0411da39d25434ea28720.png
      0_1762773353102_b4aea36b-8478-4057-a047-a75e27fc4f5a-1762772961922_7e13f27c951f4246a8a6cb53bb02aa25.png
      FCR_IID寄存器的结果是0xCC,有超时中断,但是LSR.LSR.BIT.DR是0,导致进不去读数据的while,但是一直在进中断,能不能帮忙看一下要怎么解决

      发布在 FR303x
      Z
      zxy
    • RE: 堆栈溢出

      @zr 0_1762767637710_302831e2-3115-4330-91a1-8d0e9b05f1b1-image.png
      0_1762767659137_978d3712-2db5-4d78-9b8d-4d24f3e6f975-image.png
      0_1762767708351_aa9219af-79d2-40f0-8083-69eb3cd62f67-image.png
      我想稍微增大一点堆栈大小和分给freeRTOS的空间,但是报错了,我应该怎么调整呢?

      发布在 FR303x
      Z
      zxy
    • RE: 堆栈溢出

      @zr 它会影响别的内存起始地址或长度吗,如果不会可以直接调到最大吗

      发布在 FR303x
      Z
      zxy