查看: 4101|回复: 0

基于RT1010-学习上手NXPMCU的SDK代码包和IDE

[复制链接]
  • TA的每日心情
    慵懒
    2023-1-31 09:34
  • 签到天数: 202 天

    连续签到: 1 天

    [LV.7]常住居民III

    7

    主题

    1517

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3968
    最后登录
    2025-7-23
    发表于 2021-8-2 17:43:03 | 显示全部楼层 |阅读模式
    本帖最后由 zhangt0713 于 2021-8-9 11:55 编辑

         NXP Semiconductor i.MX RT1010评估套件是一款两层通孔USB供电PCB,可演示i.MX RT1010跨界MCU的特性。该处理器基于Arm® Cortex®-M7内核,非常适合用于音频、工业、电机控制、家用电器和物联网应用。该评估板是一款入门级开发板,它可让开发人员先熟悉处理器,然后再对特定设计投入大量资源。
        最近搞到一块RT1010的评估板,参考NXP课堂推出了恩智浦小课堂第二十六期—如何上手NXP家MCU的SDK代码包和IDE上手点灯,串口,MCUconfig tool的使用
        直接在MCU XPRESSO IDE中下载RT1010的SDK。
         

    01

    01

          

    02

    02

         

    03

    03

       

    04

    04

       

    05

    05

       

    06

    06


      导入官方的SDK后,打开MCUconfig tool
       

    07

    07

       

    08

    08

       

    09

    09

       配置串口4引脚为开发板上J56,14和16,分别为RX,TX.    微信图片_20210803083217.jpg
    11.jpg

    引脚配置代码如下:
    1. void BOARD_InitPins(void) {
    2.   CLOCK_EnableClock(kCLOCK_Iomuxc);           /* iomuxc clock (iomuxc_clk_enable): 0x03U */

    3.   /* GPIO configuration of SAI1_MCLK on GPIO_08 (pin 4) */
    4.   gpio_pin_config_t SAI1_MCLK_config = {
    5.       .direction = kGPIO_DigitalOutput,
    6.       .outputLogic = 0U,
    7.       .interruptMode = kGPIO_NoIntmode
    8.   };
    9.   /* Initialize GPIO functionality on GPIO_08 (pin 4) */
    10.   GPIO_PinInit(GPIO1, 8U, &SAI1_MCLK_config);

    11.   IOMUXC_SetPinMux(
    12.       IOMUXC_GPIO_08_GPIOMUX_IO08,            /* GPIO_08 is configured as GPIOMUX_IO08 */
    13.       0U);                                              /* Software Input On Field: Input Path is determined by functionality */
    14.   IOMUXC_SetPinMux(
    15.       IOMUXC_GPIO_09_LPUART1_RXD,             /* GPIO_09 is configured as LPUART1_RXD */
    16.       0U);                                            /* Software Input On Field: Input Path is determined by functionality */
    17.   IOMUXC_SetPinMux(
    18.       IOMUXC_GPIO_10_LPUART1_TXD,             /* GPIO_10 is configured as LPUART1_TXD */
    19.       0U);                                           /* Software Input On Field: Input Path is determined by functionality */
    20.   IOMUXC_SetPinMux(
    21.       IOMUXC_GPIO_11_GPIOMUX_IO11,            /* GPIO_11 is configured as GPIOMUX_IO11 */
    22.       0U);                                    /* Software Input On Field: Input Path is determined by functionality */
    23.   IOMUXC_SetPinMux(
    24.       IOMUXC_GPIO_AD_01_LPUART4_RXD,          /* GPIO_AD_01 is configured as LPUART4_RXD */
    25.       0U);                                     /* Software Input On Field: Input Path is determined by functionality */
    26.   IOMUXC_SetPinMux(
    27.       IOMUXC_GPIO_AD_02_LPUART4_TXD,          /* GPIO_AD_02 is configured as LPUART4_TXD */
    28.       0U);                                                 /* Software Input On Field: Input Path is determined by functionality */
    29.   IOMUXC_GPR->GPR26 = ((IOMUXC_GPR->GPR26 &
    30.     (~(IOMUXC_GPR_GPR26_GPIO_SEL_MASK)))      /* Mask bits to zero which are setting */
    31.       | IOMUXC_GPR_GPR26_GPIO_SEL(0x00U)    /* Select GPIO1 or GPIO2: 0x00U */
    32.     );
    33.   IOMUXC_SetPinConfig(
    34.       IOMUXC_GPIO_08_GPIOMUX_IO08,            /* GPIO_08 PAD functional properties : */
    35.       0x30A0U);                                    /* Slew Rate Field: Slow Slew Rate
    36.                                                       Drive Strength Field: R0/4
    37.                                                       Speed Field: fast(150MHz)
    38.                                                      Open Drain Enable Field: Open Drain Disabled
    39.                                                      Pull / Keep Enable Field: Pull/Keeper Enabled
    40.                                                      Pull / Keep Select Field: Pull
    41.                                                      Pull Up / Down Config. Field: 100K Ohm Pull Down
    42.                                                     Hyst. Enable Field: Hysteresis Disabled */
    43.   IOMUXC_SetPinConfig(
    44.       IOMUXC_GPIO_09_LPUART1_RXD,             /* GPIO_09 PAD functional properties : */
    45.       0x10A0U);                                  /* Slew Rate Field: Slow Slew Rate
    46.                                                      Drive Strength Field: R0/4
    47.                                                      Speed Field: fast(150MHz)
    48.                                                      Open Drain Enable Field: Open Drain Disabled
    49.                                                      Pull / Keep Enable Field: Pull/Keeper Enabled
    50.                                                      Pull / Keep Select Field: Keeper
    51.                                                      Pull Up / Down Config. Field: 100K Ohm Pull Down
    52.                                                      Hyst. Enable Field: Hysteresis Disabled */
    53.   IOMUXC_SetPinConfig(
    54.       IOMUXC_GPIO_10_LPUART1_TXD,             /* GPIO_10 PAD functional properties : */
    55.       0x10A0U);                                   /* Slew Rate Field: Slow Slew Rate
    56.                                                         Drive Strength Field: R0/4
    57.                                                          Speed Field: fast(150MHz)
    58.                                                          Open Drain Enable Field: Open Drain Disabled
    59.                                                          Pull / Keep Enable Field: Pull/Keeper Enabled
    60.                                                          Pull / Keep Select Field: Keeper
    61.                                                          Pull Up / Down Config. Field: 100K Ohm Pull Down
    62.                                                           Hyst. Enable Field: Hysteresis Disabled */
    63.   IOMUXC_SetPinConfig(
    64.       IOMUXC_GPIO_11_GPIOMUX_IO11,            /* GPIO_11 PAD functional properties : */
    65.       0x70A0U);                                    /* Slew Rate Field: Slow Slew Rate
    66.                                                         Drive Strength Field: R0/4
    67.                                                         Speed Field: fast(150MHz)
    68.                                                         Open Drain Enable Field: Open Drain Disabled
    69.                                                          Pull / Keep Enable Field: Pull/Keeper Enabled
    70.                                                          Pull / Keep Select Field: Pull
    71.                                                          Pull Up / Down Config. Field: 47K Ohm Pull Up
    72.                                                          Hyst. Enable Field: Hysteresis Disabled */
    73.   IOMUXC_SetPinConfig(
    74.       IOMUXC_GPIO_AD_01_LPUART4_RXD,          /* GPIO_AD_01 PAD functional properties : */
    75.       0x10A0U);                                        /* Slew Rate Field: Slow Slew Rate
    76.                                                             Drive Strength Field: R0/4
    77.                                                             Speed Field: fast(150MHz)
    78.                                                             Open Drain Enable Field: Open Drain Disabled
    79.                                                              Pull / Keep Enable Field: Pull/Keeper Enabled
    80.                                                              Pull / Keep Select Field: Keeper
    81.                                                              Pull Up / Down Config. Field: 100K Ohm Pull Down
    82.                                                              Hyst. Enable Field: Hysteresis Disabled */
    83.   IOMUXC_SetPinConfig(
    84.       IOMUXC_GPIO_AD_02_LPUART4_TXD,          /* GPIO_AD_02 PAD functional properties : */
    85.       0x10A0U);                                         /* Slew Rate Field: Slow Slew Rate
    86.                                                             Drive Strength Field: R0/4
    87.                                                             Speed Field: fast(150MHz)
    88.                                                             Open Drain Enable Field: Open Drain Disabled
    89.                                                             Pull / Keep Enable Field: Pull/Keeper Enabled
    90.                                                             Pull / Keep Select Field: Keeper
    91.                                                             Pull Up / Down Config. Field: 100K Ohm Pull Down
    92.                                                             Hyst. Enable Field: Hysteresis Disabled */
    93. }
    复制代码

    窗口配置代码

    1. const lpuart_config_t LPUART4_config = {
    2.   .baudRate_Bps = 115200,
    3.   .parityMode = kLPUART_ParityDisabled,
    4.   .dataBitsCount = kLPUART_EightDataBits,
    5.   .isMsb = false,
    6.   .stopBitCount = kLPUART_OneStopBit,
    7.   .txFifoWatermark = 0,
    8.   .rxFifoWatermark = 1,
    9.   .enableRxRTS = false,
    10.   .enableTxCTS = false,
    11.   .txCtsSource = kLPUART_CtsSourcePin,
    12.   .txCtsConfig = kLPUART_CtsSampleAtStart,
    13.   .rxIdleType = kLPUART_IdleTypeStartBit,
    14.   .rxIdleConfig = kLPUART_IdleCharacter1,
    15.   .enableTx = true,
    16.   .enableRx = true
    17. };

    18. static void LPUART4_init(void) {
    19.   LPUART_Init(LPUART4_PERIPHERAL, &LPUART4_config, LPUART4_CLOCK_SOURCE);
    20.   LPUART_EnableInterrupts(LPUART4_PERIPHERAL, kLPUART_RxDataRegFullInterruptEnable);
    21.   /* Enable interrupt LPUART4_IRQn request in the NVIC. */
    22.   EnableIRQ(LPUART4_SERIAL_RX_TX_IRQN);
    23. }

    24. /***********************************************************************************************************************
    25. * Initialization functions
    26. **********************************************************************************************************************/
    27. void BOARD_InitPeripherals(void)
    28. {
    29.   /* Initialize components */
    30.   LPUART4_init();
    31. }

    32. /***********************************************************************************************************************
    33. * BOARD_InitBootPeripherals function
    34. **********************************************************************************************************************/
    35. void BOARD_InitBootPeripherals(void)
    36. {
    37.   BOARD_InitPeripherals();
    38. }
    复制代码

      自己写串口发送函数

    1. void Usart4_Send_Datas(const uint8_t *data, size_t length)
    2. {
    3.         LPUART_WriteBlocking(LPUART4, data, length);
    4. }

    5. void Usart4_Send_Strings(const char *str)
    6. {
    7.         while(*str!='\0')
    8.         {
    9.                 while (0U == (LPUART4->STAT & LPUART_STAT_TDRE_MASK));
    10.                 LPUART4->DATA = *str;
    11.                 str++;
    12.         }
    13. }



    14. void LPUART4_IRQHandler(void)        //串口中断函数,把接收到的数据再发送出去
    15. {
    16.         uint8_t data;
    17.             /* If new data arrived. */
    18.             if ((kLPUART_RxDataRegFullFlag)&LPUART_GetStatusFlags(LPUART4))
    19.             {
    20.                 data = LPUART_ReadByte(LPUART4);
    21.               //  demoRingBuffer[rxIndex++] = data;
    22.                 LPUART_WriteByte(LPUART4, data);
    23.             }
    24.             SDK_ISR_EXIT_BARRIER;
    25. }


    复制代码

      主函数中

    1. uint8_t g_tipString[10] = {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};

    2. int main(void)
    3. {
    4.     /* Define the init structure for the output LED pin*/
    5.     gpio_pin_config_t led_config = {kGPIO_DigitalOutput, 0, kGPIO_NoIntmode};

    6.     /* Board pin, clock, debug console init */
    7.     BOARD_ConfigMPU();
    8.     BOARD_InitPins();
    9.     BOARD_BootClockRUN();
    10.     BOARD_InitDebugConsole();
    11.     BOARD_InitBootPeripherals();
    12.     /* Print a note to terminal. */
    13.     PRINTF("\r\n GPIO Driver example\r\n");
    14.     PRINTF("\r\n The LED is blinking.\r\n");

    15.     /* Init output LED GPIO. */
    16.     GPIO_PinInit(EXAMPLE_LED_GPIO, EXAMPLE_LED_GPIO_PIN, &led_config);

    17.     while (1)
    18.     {
    19.         SDK_DelayAtLeastUs(1000000, SDK_DEVICE_MAXIMUM_CPU_CLOCK_FREQUENCY);
    20. #if (defined(FSL_FEATURE_IGPIO_HAS_DR_TOGGLE) && (FSL_FEATURE_IGPIO_HAS_DR_TOGGLE == 1))
    21.         GPIO_PortToggle(EXAMPLE_LED_GPIO, 1u << EXAMPLE_LED_GPIO_PIN);
    22.        //  Usart4_Send_Strings("\r\nABCDEFGHIJIKLMN.\r\n");
    23.         Usart4_Send_Datas(g_tipString, 10);
    24.          PRINTF("\r\n ABCDEFGHIJIKLMN.\r\n");
    25. #else
    26.         if (g_pinSet)
    27.         {
    28.             GPIO_PinWrite(EXAMPLE_LED_GPIO, EXAMPLE_LED_GPIO_PIN, 0U);
    29.             g_pinSet = false;
    30.         }
    31.         else
    32.         {
    33.             GPIO_PinWrite(EXAMPLE_LED_GPIO, EXAMPLE_LED_GPIO_PIN, 1U);
    34.             g_pinSet = true;
    35.         }
    36. #endif /* FSL_FEATURE_IGPIO_HAS_DR_TOGGLE */
    37.     }
    38. }
    复制代码

    结果也比较简单,串口1打印:ABCDEFGHIJIKLMN.
                              串口4打印:0123456789
                               LED灯,     闪烁,频率1Hz(不太精确,因为主函数中有发送的函数)                     数据.png

    结合SDK上手RT1010相对比较快捷,底层不用自己动手去写,只需要自己去调用相应的API去实现相应的功能
       


       
       



    该会员没有填写今日想说内容.
    回复

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-3 01:29 , Processed in 0.082618 second(s), 19 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表