在线时间25 小时
UID3370139
注册时间2024-2-29
NXP金币0
TA的每日心情 | 奋斗 2024-4-30 22:42 |
---|
签到天数: 9 天 连续签到: 1 天 [LV.3]偶尔看看II
中级会员
 
- 积分
- 250
- 最后登录
- 2024-6-15
|
本帖最后由 dirty123 于 2024-3-25 21:37 编辑
我们调试开发中会经常用到串口日志,验证测试功能,特别是没有在线仿真情况下。
一.硬件准备
MCX N947-Brk 串口引脚为:TX--P1_9,RX--P1_8,硬件板连接如下
图1:日志串口连接
二.代码准备
1.main函数如下
- /*!
- * @brief Main function
- */
- int main(void)
- {
- char ch;
-
- gpio_pin_config_t sw_config = {
- kGPIO_DigitalInput,
- 0,
- };
-
- CLOCK_EnableClock(kCLOCK_Gpio0);
- CLOCK_EnableClock(kCLOCK_Gpio3);
- /* Init board hardware. */
- /* attach FRO 12M to FLEXCOMM4 (debug console) */
- // CLOCK_SetClkDiv(kCLOCK_DivFlexcom4Clk, 1u);
- // CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
- // /* attach TRACECLKDIV to TRACE */
- // CLOCK_SetClkDiv(kCLOCK_DivTraceClk, 2U);
- // CLOCK_AttachClk(kTRACE_DIV_to_TRACE);
- BOARD_InitPins();
- BOARD_PowerMode_OD();
- BOARD_InitBootClocks();
- BOARD_InitDebugConsole();
- PRINTF("Hello NXP.\r\n");
-
- LED_RED_INIT(LOGIC_LED_OFF);
- LED_BLUE_INIT(LOGIC_LED_OFF);
- LED_GREEN_INIT(LOGIC_LED_OFF);
-
- PRINTF("RGB LED Init\r\n");
- GPIO_SetPinInterruptConfig(BOARD_SW3_GPIO, BOARD_SW3_GPIO_PIN, kGPIO_InterruptFallingEdge);
- EnableIRQ(BOARD_SW3_IRQ);
- GPIO_PinInit(BOARD_SW3_GPIO, BOARD_SW3_GPIO_PIN, &sw_config);
- PRINTF("SW3 KEY Init\r\n");
-
- g_systickCounter=0;
- /* Set systick reload value to generate 1ms interrupt */
- if (SysTick_Config(SystemCoreClock / 1000U))
- {
- while (1)
- {
- }
- }
- //SysTick_Config(12000000UL);//12000000UL
- PRINTF("Init Finish!\r\n");
- while (1)
- {
- ch = GETCHAR();
- PUTCHAR(ch);
- }
- }
复制代码 2.SW3一键烧录按键中断处理如下
- void BOARD_SW3_IRQ_HANDLER(void)
- {
- PRINTF("SW3 KEY is Pressed !\r\n");
-
- GPIO_GpioClearInterruptFlags(BOARD_SW3_GPIO, 1U << BOARD_SW3_GPIO_PIN);
-
- user_app_boot_invoke_option_t arg = {.option = {.B = {
- .tag = 0xEBu,
- .mode = 1,
- .boot_interface = 0,
- }}};
-
- bootloader_user_entry(&arg);
- //GPIO_PortToggle(BOARD_LED_GPIO, 1u << BOARD_LED_GPIO_PIN);
- SDK_ISR_EXIT_BARRIER;
- }
复制代码 3.定时器中断RGB流水灯处理如下
- void SysTick_Handler(void)
- {
- static LED_COLOUR colour_t;
-
- g_systickCounter++;
- if(g_systickCounter>1000)
- {
- g_systickCounter=0;
-
- colour_t++;
- //PRINTF("Timer Run\r\n");
- if(colour_t>=LED_MAX)
- {
- colour_t=0;
- }
- led_colour_set(colour_t);
- }
- }
复制代码
三.测验
烧录后,打开串口,可以看到初始化、定时器中断、SW3按键中断、复位后重启日志均有相应输出。
图2:串口日志输出
至此,完成串口日志输出功能。
|
|