查看: 1468|回复: 0

[原创] 【MCX-N947分享】--4. 串口日志

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-30 22:42
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    7

    主题

    21

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    250
    最后登录
    2024-6-15
    发表于 2024-3-24 23:43:47 | 显示全部楼层 |阅读模式
    本帖最后由 dirty123 于 2024-3-25 21:37 编辑

          我们调试开发中会经常用到串口日志,验证测试功能,特别是没有在线仿真情况下。

    一.硬件准备      
          MCX N947-Brk 串口引脚为:TX--P1_9,RX--P1_8,硬件板连接如下
    1_串口硬件连接.jpg
    图1:日志串口连接


    二.代码准备
    1.main函数如下
    1. /*!
    2. * @brief Main function
    3. */
    4. int main(void)
    5. {
    6.     char ch;
    7.    
    8.     gpio_pin_config_t sw_config = {
    9.         kGPIO_DigitalInput,
    10.         0,
    11.     };
    12.    
    13.     CLOCK_EnableClock(kCLOCK_Gpio0);
    14.     CLOCK_EnableClock(kCLOCK_Gpio3);

    15.     /* Init board hardware. */
    16.     /* attach FRO 12M to FLEXCOMM4 (debug console) */
    17. //    CLOCK_SetClkDiv(kCLOCK_DivFlexcom4Clk, 1u);
    18. //    CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);

    19. //    /* attach TRACECLKDIV to TRACE */
    20. //    CLOCK_SetClkDiv(kCLOCK_DivTraceClk, 2U);
    21. //    CLOCK_AttachClk(kTRACE_DIV_to_TRACE);

    22.     BOARD_InitPins();
    23.     BOARD_PowerMode_OD();
    24.     BOARD_InitBootClocks();
    25.     BOARD_InitDebugConsole();

    26.     PRINTF("Hello NXP.\r\n");
    27.    
    28.     LED_RED_INIT(LOGIC_LED_OFF);
    29.     LED_BLUE_INIT(LOGIC_LED_OFF);
    30.     LED_GREEN_INIT(LOGIC_LED_OFF);
    31.    
    32.     PRINTF("RGB LED Init\r\n");
    33.     GPIO_SetPinInterruptConfig(BOARD_SW3_GPIO, BOARD_SW3_GPIO_PIN, kGPIO_InterruptFallingEdge);
    34.     EnableIRQ(BOARD_SW3_IRQ);
    35.     GPIO_PinInit(BOARD_SW3_GPIO, BOARD_SW3_GPIO_PIN, &sw_config);
    36.     PRINTF("SW3 KEY Init\r\n");
    37.    
    38.     g_systickCounter=0;
    39.     /* Set systick reload value to generate 1ms interrupt */
    40.     if (SysTick_Config(SystemCoreClock / 1000U))
    41.     {
    42.         while (1)
    43.         {
    44.         }
    45.     }
    46.     //SysTick_Config(12000000UL);//12000000UL
    47.     PRINTF("Init Finish!\r\n");
    48.     while (1)
    49.     {
    50.         ch = GETCHAR();
    51.         PUTCHAR(ch);
    52.     }
    53. }
    复制代码
    2.SW3一键烧录按键中断处理如下
    1. void BOARD_SW3_IRQ_HANDLER(void)
    2. {
    3.     PRINTF("SW3 KEY is Pressed !\r\n");
    4.    
    5.     GPIO_GpioClearInterruptFlags(BOARD_SW3_GPIO, 1U << BOARD_SW3_GPIO_PIN);
    6.    
    7.     user_app_boot_invoke_option_t arg = {.option = {.B = {
    8.                                                         .tag            = 0xEBu,
    9.                                                         .mode           = 1,
    10.                                                         .boot_interface = 0,
    11.                                                     }}};
    12.    
    13.     bootloader_user_entry(&arg);
    14.     //GPIO_PortToggle(BOARD_LED_GPIO, 1u << BOARD_LED_GPIO_PIN);
    15.     SDK_ISR_EXIT_BARRIER;
    16. }
    复制代码
    3.定时器中断RGB流水灯处理如下
    1. void SysTick_Handler(void)
    2. {
    3.     static LED_COLOUR colour_t;
    4.    
    5.     g_systickCounter++;
    6.     if(g_systickCounter>1000)
    7.     {
    8.         g_systickCounter=0;
    9.         
    10.         colour_t++;
    11.         //PRINTF("Timer Run\r\n");
    12.         if(colour_t>=LED_MAX)
    13.         {
    14.             colour_t=0;
    15.         }
    16.         led_colour_set(colour_t);
    17.     }
    18. }
    复制代码

    三.测验

          烧录后,打开串口,可以看到初始化、定时器中断、SW3按键中断、复位后重启日志均有相应输出。
    2_串口日志输出.jpg
    图2:串口日志输出


          至此,完成串口日志输出功能。


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

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-27 03:47 , Processed in 0.080469 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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