在线时间279 小时
UID3400818
注册时间2017-8-9
NXP金币45
TA的每日心情 | 慵懒 2023-1-31 09:34 |
---|
签到天数: 202 天 连续签到: 1 天 [LV.7]常住居民III
金牌会员
 
- 积分
- 3968
- 最后登录
- 2025-7-23
|
本帖最后由 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
02
03
04
05
06
导入官方的SDK后,打开MCUconfig tool
07
08
09
配置串口4引脚为开发板上J56,14和16,分别为RX,TX.
引脚配置代码如下:
- void BOARD_InitPins(void) {
- CLOCK_EnableClock(kCLOCK_Iomuxc); /* iomuxc clock (iomuxc_clk_enable): 0x03U */
- /* GPIO configuration of SAI1_MCLK on GPIO_08 (pin 4) */
- gpio_pin_config_t SAI1_MCLK_config = {
- .direction = kGPIO_DigitalOutput,
- .outputLogic = 0U,
- .interruptMode = kGPIO_NoIntmode
- };
- /* Initialize GPIO functionality on GPIO_08 (pin 4) */
- GPIO_PinInit(GPIO1, 8U, &SAI1_MCLK_config);
- IOMUXC_SetPinMux(
- IOMUXC_GPIO_08_GPIOMUX_IO08, /* GPIO_08 is configured as GPIOMUX_IO08 */
- 0U); /* Software Input On Field: Input Path is determined by functionality */
- IOMUXC_SetPinMux(
- IOMUXC_GPIO_09_LPUART1_RXD, /* GPIO_09 is configured as LPUART1_RXD */
- 0U); /* Software Input On Field: Input Path is determined by functionality */
- IOMUXC_SetPinMux(
- IOMUXC_GPIO_10_LPUART1_TXD, /* GPIO_10 is configured as LPUART1_TXD */
- 0U); /* Software Input On Field: Input Path is determined by functionality */
- IOMUXC_SetPinMux(
- IOMUXC_GPIO_11_GPIOMUX_IO11, /* GPIO_11 is configured as GPIOMUX_IO11 */
- 0U); /* Software Input On Field: Input Path is determined by functionality */
- IOMUXC_SetPinMux(
- IOMUXC_GPIO_AD_01_LPUART4_RXD, /* GPIO_AD_01 is configured as LPUART4_RXD */
- 0U); /* Software Input On Field: Input Path is determined by functionality */
- IOMUXC_SetPinMux(
- IOMUXC_GPIO_AD_02_LPUART4_TXD, /* GPIO_AD_02 is configured as LPUART4_TXD */
- 0U); /* Software Input On Field: Input Path is determined by functionality */
- IOMUXC_GPR->GPR26 = ((IOMUXC_GPR->GPR26 &
- (~(IOMUXC_GPR_GPR26_GPIO_SEL_MASK))) /* Mask bits to zero which are setting */
- | IOMUXC_GPR_GPR26_GPIO_SEL(0x00U) /* Select GPIO1 or GPIO2: 0x00U */
- );
- IOMUXC_SetPinConfig(
- IOMUXC_GPIO_08_GPIOMUX_IO08, /* GPIO_08 PAD functional properties : */
- 0x30A0U); /* Slew Rate Field: Slow Slew Rate
- Drive Strength Field: R0/4
- Speed Field: fast(150MHz)
- Open Drain Enable Field: Open Drain Disabled
- Pull / Keep Enable Field: Pull/Keeper Enabled
- Pull / Keep Select Field: Pull
- Pull Up / Down Config. Field: 100K Ohm Pull Down
- Hyst. Enable Field: Hysteresis Disabled */
- IOMUXC_SetPinConfig(
- IOMUXC_GPIO_09_LPUART1_RXD, /* GPIO_09 PAD functional properties : */
- 0x10A0U); /* Slew Rate Field: Slow Slew Rate
- Drive Strength Field: R0/4
- Speed Field: fast(150MHz)
- Open Drain Enable Field: Open Drain Disabled
- Pull / Keep Enable Field: Pull/Keeper Enabled
- Pull / Keep Select Field: Keeper
- Pull Up / Down Config. Field: 100K Ohm Pull Down
- Hyst. Enable Field: Hysteresis Disabled */
- IOMUXC_SetPinConfig(
- IOMUXC_GPIO_10_LPUART1_TXD, /* GPIO_10 PAD functional properties : */
- 0x10A0U); /* Slew Rate Field: Slow Slew Rate
- Drive Strength Field: R0/4
- Speed Field: fast(150MHz)
- Open Drain Enable Field: Open Drain Disabled
- Pull / Keep Enable Field: Pull/Keeper Enabled
- Pull / Keep Select Field: Keeper
- Pull Up / Down Config. Field: 100K Ohm Pull Down
- Hyst. Enable Field: Hysteresis Disabled */
- IOMUXC_SetPinConfig(
- IOMUXC_GPIO_11_GPIOMUX_IO11, /* GPIO_11 PAD functional properties : */
- 0x70A0U); /* Slew Rate Field: Slow Slew Rate
- Drive Strength Field: R0/4
- Speed Field: fast(150MHz)
- Open Drain Enable Field: Open Drain Disabled
- Pull / Keep Enable Field: Pull/Keeper Enabled
- Pull / Keep Select Field: Pull
- Pull Up / Down Config. Field: 47K Ohm Pull Up
- Hyst. Enable Field: Hysteresis Disabled */
- IOMUXC_SetPinConfig(
- IOMUXC_GPIO_AD_01_LPUART4_RXD, /* GPIO_AD_01 PAD functional properties : */
- 0x10A0U); /* Slew Rate Field: Slow Slew Rate
- Drive Strength Field: R0/4
- Speed Field: fast(150MHz)
- Open Drain Enable Field: Open Drain Disabled
- Pull / Keep Enable Field: Pull/Keeper Enabled
- Pull / Keep Select Field: Keeper
- Pull Up / Down Config. Field: 100K Ohm Pull Down
- Hyst. Enable Field: Hysteresis Disabled */
- IOMUXC_SetPinConfig(
- IOMUXC_GPIO_AD_02_LPUART4_TXD, /* GPIO_AD_02 PAD functional properties : */
- 0x10A0U); /* Slew Rate Field: Slow Slew Rate
- Drive Strength Field: R0/4
- Speed Field: fast(150MHz)
- Open Drain Enable Field: Open Drain Disabled
- Pull / Keep Enable Field: Pull/Keeper Enabled
- Pull / Keep Select Field: Keeper
- Pull Up / Down Config. Field: 100K Ohm Pull Down
- Hyst. Enable Field: Hysteresis Disabled */
- }
复制代码
窗口配置代码
- const lpuart_config_t LPUART4_config = {
- .baudRate_Bps = 115200,
- .parityMode = kLPUART_ParityDisabled,
- .dataBitsCount = kLPUART_EightDataBits,
- .isMsb = false,
- .stopBitCount = kLPUART_OneStopBit,
- .txFifoWatermark = 0,
- .rxFifoWatermark = 1,
- .enableRxRTS = false,
- .enableTxCTS = false,
- .txCtsSource = kLPUART_CtsSourcePin,
- .txCtsConfig = kLPUART_CtsSampleAtStart,
- .rxIdleType = kLPUART_IdleTypeStartBit,
- .rxIdleConfig = kLPUART_IdleCharacter1,
- .enableTx = true,
- .enableRx = true
- };
- static void LPUART4_init(void) {
- LPUART_Init(LPUART4_PERIPHERAL, &LPUART4_config, LPUART4_CLOCK_SOURCE);
- LPUART_EnableInterrupts(LPUART4_PERIPHERAL, kLPUART_RxDataRegFullInterruptEnable);
- /* Enable interrupt LPUART4_IRQn request in the NVIC. */
- EnableIRQ(LPUART4_SERIAL_RX_TX_IRQN);
- }
- /***********************************************************************************************************************
- * Initialization functions
- **********************************************************************************************************************/
- void BOARD_InitPeripherals(void)
- {
- /* Initialize components */
- LPUART4_init();
- }
- /***********************************************************************************************************************
- * BOARD_InitBootPeripherals function
- **********************************************************************************************************************/
- void BOARD_InitBootPeripherals(void)
- {
- BOARD_InitPeripherals();
- }
复制代码
自己写串口发送函数
- void Usart4_Send_Datas(const uint8_t *data, size_t length)
- {
- LPUART_WriteBlocking(LPUART4, data, length);
- }
- void Usart4_Send_Strings(const char *str)
- {
- while(*str!='\0')
- {
- while (0U == (LPUART4->STAT & LPUART_STAT_TDRE_MASK));
- LPUART4->DATA = *str;
- str++;
- }
- }
- void LPUART4_IRQHandler(void) //串口中断函数,把接收到的数据再发送出去
- {
- uint8_t data;
- /* If new data arrived. */
- if ((kLPUART_RxDataRegFullFlag)&LPUART_GetStatusFlags(LPUART4))
- {
- data = LPUART_ReadByte(LPUART4);
- // demoRingBuffer[rxIndex++] = data;
- LPUART_WriteByte(LPUART4, data);
- }
- SDK_ISR_EXIT_BARRIER;
- }
复制代码
主函数中
- uint8_t g_tipString[10] = {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
- int main(void)
- {
- /* Define the init structure for the output LED pin*/
- gpio_pin_config_t led_config = {kGPIO_DigitalOutput, 0, kGPIO_NoIntmode};
- /* Board pin, clock, debug console init */
- BOARD_ConfigMPU();
- BOARD_InitPins();
- BOARD_BootClockRUN();
- BOARD_InitDebugConsole();
- BOARD_InitBootPeripherals();
- /* Print a note to terminal. */
- PRINTF("\r\n GPIO Driver example\r\n");
- PRINTF("\r\n The LED is blinking.\r\n");
- /* Init output LED GPIO. */
- GPIO_PinInit(EXAMPLE_LED_GPIO, EXAMPLE_LED_GPIO_PIN, &led_config);
- while (1)
- {
- SDK_DelayAtLeastUs(1000000, SDK_DEVICE_MAXIMUM_CPU_CLOCK_FREQUENCY);
- #if (defined(FSL_FEATURE_IGPIO_HAS_DR_TOGGLE) && (FSL_FEATURE_IGPIO_HAS_DR_TOGGLE == 1))
- GPIO_PortToggle(EXAMPLE_LED_GPIO, 1u << EXAMPLE_LED_GPIO_PIN);
- // Usart4_Send_Strings("\r\nABCDEFGHIJIKLMN.\r\n");
- Usart4_Send_Datas(g_tipString, 10);
- PRINTF("\r\n ABCDEFGHIJIKLMN.\r\n");
- #else
- if (g_pinSet)
- {
- GPIO_PinWrite(EXAMPLE_LED_GPIO, EXAMPLE_LED_GPIO_PIN, 0U);
- g_pinSet = false;
- }
- else
- {
- GPIO_PinWrite(EXAMPLE_LED_GPIO, EXAMPLE_LED_GPIO_PIN, 1U);
- g_pinSet = true;
- }
- #endif /* FSL_FEATURE_IGPIO_HAS_DR_TOGGLE */
- }
- }
复制代码
结果也比较简单,串口1打印:ABCDEFGHIJIKLMN.
串口4打印:0123456789
LED灯, 闪烁,频率1Hz(不太精确,因为主函数中有发送的函数)
结合SDK上手RT1010相对比较快捷,底层不用自己动手去写,只需要自己去调用相应的API去实现相应的功能
|
|