This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

How can I transport the project from nRF52832 to nRF52810 by solving the compiling errors like "identifier UART_XXX is undefined" ?

SDK: nRF5_SDK_15.2.0

IDEs: Keil

SoftDevices: S132

When I use the SDK example to build for nRF52810, following the steps stated in nRF5_SDK/v15-2-0/nrf52810_user_guide#ug_52810_own_project link, the compiler prompts amout of errors about the UART as following:

*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(70): error:  #136: struct "<unnamed>"  has no field "TASKS_SUSPEND"
      NRF_UART_TASK_SUSPEND = offsetof(NRF_UARTE_Type, TASKS_SUSPEND), /**< Task for suspending UART. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(97): error:  #20: identifier "UART_INTENCLR_CTS_Msk" is undefined
      NRF_UART_INT_MASK_CTS    = UART_INTENCLR_CTS_Msk,    /**< CTS line activation interrupt. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(98): error:  #20: identifier "UART_INTENCLR_NCTS_Msk" is undefined
      NRF_UART_INT_MASK_NCTS   = UART_INTENCLR_NCTS_Msk,   /**< CTS line deactivation interrupt. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(99): error:  #20: identifier "UART_INTENCLR_RXDRDY_Msk" is undefined
      NRF_UART_INT_MASK_RXDRDY = UART_INTENCLR_RXDRDY_Msk, /**< Data ready in RXD interrupt. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(100): error:  #20: identifier "UART_INTENCLR_TXDRDY_Msk" is undefined
      NRF_UART_INT_MASK_TXDRDY = UART_INTENCLR_TXDRDY_Msk,  /**< Data sent from TXD interrupt. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(101): error:  #20: identifier "UART_INTENCLR_ERROR_Msk" is undefined
      NRF_UART_INT_MASK_ERROR  = UART_INTENCLR_ERROR_Msk,  /**< Error detection interrupt. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(102): error:  #20: identifier "UART_INTENCLR_RXTO_Msk" is undefined
      NRF_UART_INT_MASK_RXTO   = UART_INTENCLR_RXTO_Msk    /**< Receiver timeout interrupt. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(112): error:  #20: identifier "UART_BAUDRATE_BAUDRATE_Baud1200" is undefined
      NRF_UART_BAUDRATE_1200    = UART_BAUDRATE_BAUDRATE_Baud1200,   /**< 1200 baud. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(113): error:  #20: identifier "UART_BAUDRATE_BAUDRATE_Baud2400" is undefined
      NRF_UART_BAUDRATE_2400    = UART_BAUDRATE_BAUDRATE_Baud2400,   /**< 2400 baud. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(114): error:  #20: identifier "UART_BAUDRATE_BAUDRATE_Baud4800" is undefined
      NRF_UART_BAUDRATE_4800    = UART_BAUDRATE_BAUDRATE_Baud4800,   /**< 4800 baud. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(115): error:  #20: identifier "UART_BAUDRATE_BAUDRATE_Baud9600" is undefined
      NRF_UART_BAUDRATE_9600    = UART_BAUDRATE_BAUDRATE_Baud9600,   /**< 9600 baud. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(116): error:  #20: identifier "UART_BAUDRATE_BAUDRATE_Baud14400" is undefined
      NRF_UART_BAUDRATE_14400   = UART_BAUDRATE_BAUDRATE_Baud14400,  /**< 14400 baud. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(117): error:  #20: identifier "UART_BAUDRATE_BAUDRATE_Baud19200" is undefined
      NRF_UART_BAUDRATE_19200   = UART_BAUDRATE_BAUDRATE_Baud19200,  /**< 19200 baud. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(118): error:  #20: identifier "UART_BAUDRATE_BAUDRATE_Baud28800" is undefined
      NRF_UART_BAUDRATE_28800   = UART_BAUDRATE_BAUDRATE_Baud28800,  /**< 28800 baud. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(119): error:  #20: identifier "UART_BAUDRATE_BAUDRATE_Baud31250" is undefined
      NRF_UART_BAUDRATE_31250   = UART_BAUDRATE_BAUDRATE_Baud31250,  /**< 31250 baud. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(120): error:  #20: identifier "UART_BAUDRATE_BAUDRATE_Baud38400" is undefined
      NRF_UART_BAUDRATE_38400   = UART_BAUDRATE_BAUDRATE_Baud38400,  /**< 38400 baud. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(121): error:  #20: identifier "UART_BAUDRATE_BAUDRATE_Baud56000" is undefined
      NRF_UART_BAUDRATE_56000   = UART_BAUDRATE_BAUDRATE_Baud56000,  /**< 56000 baud. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(122): error:  #20: identifier "UART_BAUDRATE_BAUDRATE_Baud57600" is undefined
      NRF_UART_BAUDRATE_57600   = UART_BAUDRATE_BAUDRATE_Baud57600,  /**< 57600 baud. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(123): error:  #20: identifier "UART_BAUDRATE_BAUDRATE_Baud76800" is undefined
      NRF_UART_BAUDRATE_76800   = UART_BAUDRATE_BAUDRATE_Baud76800,  /**< 76800 baud. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(124): error:  #20: identifier "UART_BAUDRATE_BAUDRATE_Baud115200" is undefined
      NRF_UART_BAUDRATE_115200  = UART_BAUDRATE_BAUDRATE_Baud115200, /**< 115200 baud. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(125): error:  #20: identifier "UART_BAUDRATE_BAUDRATE_Baud230400" is undefined
      NRF_UART_BAUDRATE_230400  = UART_BAUDRATE_BAUDRATE_Baud230400, /**< 230400 baud. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(126): error:  #20: identifier "UART_BAUDRATE_BAUDRATE_Baud250000" is undefined
      NRF_UART_BAUDRATE_250000  = UART_BAUDRATE_BAUDRATE_Baud250000, /**< 250000 baud. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(127): error:  #20: identifier "UART_BAUDRATE_BAUDRATE_Baud460800" is undefined
      NRF_UART_BAUDRATE_460800  = UART_BAUDRATE_BAUDRATE_Baud460800, /**< 460800 baud. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(128): error:  #20: identifier "UART_BAUDRATE_BAUDRATE_Baud921600" is undefined
      NRF_UART_BAUDRATE_921600  = UART_BAUDRATE_BAUDRATE_Baud921600, /**< 921600 baud. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(129): error:  #20: identifier "UART_BAUDRATE_BAUDRATE_Baud1M" is undefined
      NRF_UART_BAUDRATE_1000000 = UART_BAUDRATE_BAUDRATE_Baud1M,     /**< 1000000 baud. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(138): error:  #20: identifier "UART_ERRORSRC_OVERRUN_Msk" is undefined
      NRF_UART_ERROR_OVERRUN_MASK = UART_ERRORSRC_OVERRUN_Msk,   /**< Overrun error. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(139): error:  #20: identifier "UART_ERRORSRC_PARITY_Msk" is undefined
      NRF_UART_ERROR_PARITY_MASK  = UART_ERRORSRC_PARITY_Msk,    /**< Parity error. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(140): error:  #20: identifier "UART_ERRORSRC_FRAMING_Msk" is undefined
      NRF_UART_ERROR_FRAMING_MASK = UART_ERRORSRC_FRAMING_Msk,   /**< Framing error. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(141): error:  #20: identifier "UART_ERRORSRC_BREAK_Msk" is undefined
      NRF_UART_ERROR_BREAK_MASK   = UART_ERRORSRC_BREAK_Msk,     /**< Break error. */
..\..\..\..\..\..\modules\nrfx\hal/nrf_uart.h(150): error:  #20: identifier "UART_CONFIG_PARITY_Excluded" is undefined
      NRF_UART_PARITY_EXCLUDED = UART_CONFIG_PARITY_Excluded << UART_CONFIG_PARITY_Pos, /**< Parity excluded. */
..\..\..\..\..\..\modules\nrfx\drivers\src\nrfx_uart.c: 0 warnings, 30 errors
".\_build\nrf52832_xxaa.axf" - 30 Error(s), 0 Warning(s).
Target not created.
Build Time Elapsed:  00:00:25

I check the "nrf.h" and find that the macro "NRF52810_XXAA" for nRF52810 will take the "nrf52810_bitfields.h" included instead the "nrf52810_bitfields.h".The "nrf52810_bitfields.h" defines the macros about the UART as this: "UARTE_XXX", but the macros used by the project source files and defined in "nrf52810_bitfields.h" are like this: "UART_XXX", which cause the compiling failed.

Can I change the macros used by the project source files from "UART_XXX" to "UARTE_XXX" simply? Or change the macros about the UART in "nrf52810_bitfields.h" from "UARTE_XXX" to "UART_XXX" simply? Will it work? Will it cuase something error unexpected?

What way else can I use to solve this compiler errors and make the project run normally in function?

Please give some help, thank you!

Related