jennyzhaojie

  • 2024-12-16
  • 发表了主题帖: 【MCXN947开发板测评】RTC电子时钟

    MCXN947配有RTC计算器,将它与LCD显示屏配合可方便地实现电子时钟功能。 在配置LCD显示屏之前,RTC程序所实现的功能是设置系统时间,如何开始计时,当得到预置的闹钟时间时停止计时,在打开串口的情况下,其运行结构如图1所示。   图1 测试效果   在为LCD屏配置数据显示函数后,即可完成时钟显示的需要,该数据显示函数是: void LCD_ShowNum(uint16_t x,uint16_t y,uint16_t num,uint8_t len,uint16_t color) { uint8_t t,temp; uint8_t show=0; for(t=0;t<len;t++) { temp=(num/mypow(10,len-t-1))%10; if(enshow==0&&t<(len-1)) { if(temp==0) { LCD_ShowChar(x+8*t,y,' ',0,color); continue; } else show=1; } LCD_ShowChar(x+8*t,y,temp+48,0,color); } }   实现电子时钟计时效果的主程序是: int main(void) { irtc_config_t irtcConfig; gpio_pin_config_t led_config = { kGPIO_DigitalOutput, 0, }; #if APP_IRTC_IS_SLAVE irtc_datetime_t alarmDatetime, datetimeGet; #else irtc_datetime_t datetime, alarmDatetime, datetimeGet; datetime.year = 2024; datetime.month = 12; datetime.day = 15; datetime.weekDay = 7; datetime.hour = 18; datetime.minute = 55; datetime.second = 30; #endif CLOCK_SetClkDiv(kCLOCK_DivFlexcom4Clk, 1u); CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH); CLOCK_EnableClock(kCLOCK_Gpio0); BOARD_InitPins(); BOARD_InitBootClocks(); BOARD_InitDebugConsole(); GPIO_PinInit(GPIO0, 25U, &led_config); GPIO_PinInit(GPIO0, 26U, &led_config); GPIO_PinInit(GPIO0, 24U, &led_config); GPIO_PinInit(GPIO0, 27U, &led_config); GPIO_PinInit(GPIO0, 10U, &led_config); GPIO_PinInit(GPIO0, 28U, &led_config); Lcd_Init(); LCD_Clear(RED); LCD_ShowString(20,10,"MCXN947 CLOCK",YELLOW); LCD_ShowString(20,40," : :",YELLOW); CLOCK_SetupClk16KClocking(kCLOCK_Clk16KToVbat | kCLOCK_Clk16KToMain); IRTC_GetDefaultConfig(&irtcConfig); if (IRTC_Init(RTC, &irtcConfig) == kStatus_Fail) { return 1; } #if !defined(FSL_FEATURE_RTC_HAS_NO_GP_DATA_REG) || (!FSL_FEATURE_RTC_HAS_NO_GP_DATA_REG) IRTC_Enable32kClkDuringRegisterWrite(RTC, true); #endif #if !defined(FSL_FEATURE_RTC_HAS_NO_TAMPER_FEATURE) || (!FSL_FEATURE_RTC_HAS_NO_TAMPER_FEATURE) IRTC_ClearTamperStatusFlag(RTC); #endif #if !APP_IRTC_IS_SLAVE IRTC_SetDatetime(RTC, &datetime); #endif IRTC_GetDatetime(RTC, &datetimeGet); LCD_ShowNum(20,40,datetimeGet.hour,2,YELLOW); LCD_ShowNum(44,40,datetimeGet.minute,2,YELLOW); LCD_ShowNum(68,40,datetimeGet.second,2,YELLOW); while (1) { IRTC_GetDatetime(RTC, &datetimeGet); LCD_ShowNum(20,40,datetimeGet.hour,2,YELLOW); LCD_ShowNum(44,40,datetimeGet.minute,2,YELLOW); LCD_ShowNum(68,40,datetimeGet.second,2,YELLOW); } }   经程序的编译与下载,其显示效果如图2显示,这样就实现了电子时钟的计时功能。   图2 显示效果  

  • 2024-12-14
  • 发表了主题帖: 【MCXN947开发板测评】 P3T1755温度检测与显示

    本帖最后由 jennyzhaojie 于 2024-12-14 22:40 编辑 在MCXN947开发板上配有温度传感器P3T1755,该传感器以I2C的方式工作,其电路如图1所示。   图1 传感器电路   在连接串口的情况下,其检测结果如图2所示。   图2 检测结果   为便于观察,在配接LCD显示屏的情况下,其实现温度检测与显示的主程序是: int main(void) { status_t result = kStatus_Success; i3c_master_config_t masterConfig; p3t1755_config_t p3t1755Config; double temperature,d; gpio_pin_config_t led_config = { kGPIO_DigitalOutput, 0, }; CLOCK_SetClkDiv(kCLOCK_DivFlexcom4Clk, 1); CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH); CLOCK_EnableClock(kCLOCK_Gpio0); CLOCK_SetClkDiv(kCLOCK_DivI3c1FClk, 6U); CLOCK_AttachClk(kPLL0_to_I3C1FCLK); BOARD_InitPins(); BOARD_InitBootClocks(); BOARD_InitDebugConsole(); GPIO_PinInit(GPIO0, 25U, &led_config); GPIO_PinInit(GPIO0, 26U, &led_config); GPIO_PinInit(GPIO0, 24U, &led_config); GPIO_PinInit(GPIO0, 27U, &led_config); GPIO_PinInit(GPIO0, 10U, &led_config); GPIO_PinInit(GPIO0, 28U, &led_config); PRINTF("\r\nI3C master read sensor data example.\r\n"); I3C_MasterGetDefaultConfig(&masterConfig); masterConfig.baudRate_Hz.i2cBaud = EXAMPLE_I2C_BAUDRATE; masterConfig.baudRate_Hz.i3cPushPullBaud = EXAMPLE_I3C_PP_BAUDRATE; masterConfig.baudRate_Hz.i3cOpenDrainBaud = EXAMPLE_I3C_OD_BAUDRATE; masterConfig.enableOpenDrainStop = false; masterConfig.disableTimeout = true; I3C_MasterInit(EXAMPLE_MASTER, &masterConfig, I3C_MASTER_CLOCK_FREQUENCY); I3C_MasterTransferCreateHandle(EXAMPLE_MASTER, &g_i3c_m_handle, &masterCallback, NULL); result = p3t1755_set_dynamic_address(); if (result != kStatus_Success) { PRINTF("\r\nP3T1755 set dynamic address failed.\r\n"); } p3t1755Config.writeTransfer = I3C_WriteSensor; p3t1755Config.readTransfer = I3C_ReadSensor; p3t1755Config.sensorAddress = SENSOR_ADDR; P3T1755_Init(&p3t1755Handle, &p3t1755Config); Lcd_Init(); LCD_Clear(RED); LCD_ShowString(20,10,"MCXN947",YELLOW); LCD_ShowString(20,30,"P3T1755",YELLOW); LCD_ShowString(20,50,"t=",YELLOW); while (1) { result = P3T1755_ReadTemperature(&p3t1755Handle, &temperature); if (result != kStatus_Success) { PRINTF("\r\nP3T1755 read temperature failed.\r\n"); } else { LCD_ShowNum(36,50,temperature,3,YELLOW); d=((int)(temperature*100))%100; LCD_ShowChar(60,50,'.',0,YELLOW); LCD_ShowNum(68,50,d,2,YELLOW); } SDK_DelayAtLeastUs(1000000, CLOCK_GetCoreSysClkFreq()); } }   经程序的编译和下载,其显示效果如图4所示。   图3 电路连接     图4 检测效果  

  • 2024-12-13
  • 发表了主题帖: 【MCXN947开发板测评】PAD功能测试

    在MCXN947开发板上配有一个触摸键,其电路如图1所示。   图1 触摸电路   相应的可以在网上查找到它的示例程序,其主程序的内容如下: int main(void) { volatile uint32_t i = 0; tsi_selfCap_config_t tsiConfig_selfCap; lptmr_config_t lptmrConfig; memset((void *)&lptmrConfig, 0, sizeof(lptmrConfig)); CLOCK_EnableClock(kCLOCK_InputMux0); CLOCK_SetClkDiv(kCLOCK_DivFlexcom4Clk, 1u); CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH); CLOCK_SetupClk16KClocking(kCLOCK_Clk16KToVsys); CLOCK_SetClkDiv(kCLOCK_DivTsiClk, 1u); CLOCK_AttachClk(kCLK_IN_to_TSI); BOARD_InitPins(); BOARD_InitBootClocks(); BOARD_InitDebugConsole(); LED1_INIT(); LED2_INIT(); LPTMR_GetDefaultConfig(&lptmrConfig); TSI_GetSelfCapModeDefaultConfig(&tsiConfig_selfCap); LPTMR_Init(LPTMR0, &lptmrConfig); TSI_InitSelfCapMode(APP_TSI, &tsiConfig_selfCap); TSI_EnableNoiseCancellation(APP_TSI, true); LPTMR_SetTimerPeriod(LPTMR0, USEC_TO_COUNT(LPTMR_USEC_COUNT, LPTMR_SOURCE_CLOCK)); NVIC_EnableIRQ(TSI0_IRQn); TSI_EnableModule(APP_TSI, true); PRINTF("\r\nTSI_V6 Self-Cap mode Example Start!\r\n"); memset((void *)&buffer, 0, sizeof(buffer)); TSI_SelfCapCalibrate(APP_TSI, &buffer); for (i = 0U; i < FSL_FEATURE_TSI_CHANNEL_COUNT; i++) { PRINTF("Calibrated counters for channel %d is: %d \r\n", i, buffer.calibratedData[i]); } PRINTF("\r\nNOW, comes to the software trigger scan using polling method!\r\n"); TSI_EnableHardwareTriggerScan(APP_TSI, false); /* Enable software trigger scan */ TSI_DisableInterrupts(APP_TSI, kTSI_EndOfScanInterruptEnable); TSI_ClearStatusFlags(APP_TSI, kTSI_EndOfScanFlag); TSI_SetSelfCapMeasuredChannel(APP_TSI, BOARD_TSI_ELECTRODE_1); TSI_StartSoftwareTrigger(APP_TSI); while (!(TSI_GetStatusFlags(APP_TSI) & kTSI_EndOfScanFlag)) { } PRINTF("Channel %d Normal mode counter is: %d \r\n", BOARD_TSI_ELECTRODE_1, TSI_GetCounter(APP_TSI)); #if (defined(PAD_TSI_ELECTRODE_2_ENABLED) && PAD_TSI_ELECTRODE_2_ENABLED) TSI_ClearStatusFlags(APP_TSI, kTSI_EndOfScanFlag); TSI_SetSelfCapMeasuredChannel(APP_TSI, BOARD_TSI_ELECTRODE_2); TSI_StartSoftwareTrigger(APP_TSI); while (!(TSI_GetStatusFlags(APP_TSI) & kTSI_EndOfScanFlag)) { } PRINTF("Channel %d Normal mode counter is: %d \r\n", BOARD_TSI_ELECTRODE_2, TSI_GetCounter(APP_TSI)); #endif TSI_ClearStatusFlags(APP_TSI, kTSI_EndOfScanFlag | kTSI_OutOfRangeFlag); PRINTF("\r\nNOW, comes to the software trigger scan using interrupt method!\r\n"); TSI_EnableInterrupts(APP_TSI, kTSI_GlobalInterruptEnable); TSI_EnableInterrupts(APP_TSI, kTSI_EndOfScanInterruptEnable); TSI_ClearStatusFlags(APP_TSI, kTSI_EndOfScanFlag); TSI_SetSelfCapMeasuredChannel(APP_TSI, BOARD_TSI_ELECTRODE_1); while (s_tsiInProgress) { TSI_StartSoftwareTrigger(APP_TSI); } s_tsiInProgress = true; PRINTF("Channel %d Normal mode counter is: %d \r\n", BOARD_TSI_ELECTRODE_1, TSI_GetCounter(APP_TSI)); #if (defined(PAD_TSI_ELECTRODE_2_ENABLED) && PAD_TSI_ELECTRODE_2_ENABLED) TSI_SetSelfCapMeasuredChannel(APP_TSI, BOARD_TSI_ELECTRODE_2); TSI_StartSoftwareTrigger(APP_TSI); while (s_tsiInProgress) { TSI_StartSoftwareTrigger(APP_TSI); } PRINTF("Channel %d Normal mode counter is: %d \r\n", BOARD_TSI_ELECTRODE_2, TSI_GetCounter(APP_TSI)); #endif PRINTF("\r\nNOW, comes to the hardware trigger scan method!\r\n"); PRINTF("After running, touch pad %s each time, you will see LED toggles.\r\n", PAD_TSI_ELECTRODE_1_NAME); TSI_EnableModule(APP_TSI, false); TSI_EnableHardwareTriggerScan(APP_TSI, true); TSI_EnableInterrupts(APP_TSI, kTSI_EndOfScanInterruptEnable); TSI_ClearStatusFlags(APP_TSI, kTSI_EndOfScanFlag); TSI_SetSelfCapMeasuredChannel(APP_TSI, BOARD_TSI_ELECTRODE_1); TSI_EnableModule(APP_TSI, true); INPUTMUX_AttachSignal(INPUTMUX0, 0U, kINPUTMUX_Lptmr0ToTsiTrigger); LPTMR_StartTimer(LPTMR0); while (1) { } }   相应的中断服务程序是: void TSI0_IRQHandler(void) { #if BOARD_TSI_ELECTRODE_1 > 15 if ((TSI_GetSelfCapMeasuredChannel(APP_TSI) | 0x10U) == BOARD_TSI_ELECTRODE_1) #else if (TSI_GetSelfCapMeasuredChannel(APP_TSI) == BOARD_TSI_ELECTRODE_1) #endif { if (TSI_GetCounter(APP_TSI) > (uint16_t)(buffer.calibratedData[BOARD_TSI_ELECTRODE_1] + TOUCH_DELTA_VALUE)) { LED1_TOGGLE(); s_tsiInProgress = false; } } TSI_ClearStatusFlags(APP_TSI, kTSI_EndOfScanFlag); SDK_ISR_EXIT_BARRIER; }   由此可知,当触摸PAD键时,会启动中断服务,即蓝色LED的状态被翻转一次,见图2和图3所示。 在连接串口的情况下,会见到图4的输出内容。   图2 熄灭状态     图3 点亮状态     图4 串口输出信息  

  • 回复了主题帖: 【MCXN947开发板测评】LCD屏显示驱动

    秦天qintian0303 发表于 2024-12-13 14:47 乍一看  还以为做了适配呢   哈哈!!!

  • 发表了主题帖: 【MCXN947开发板测评】LCD屏显示驱动

    MCXN947开发板缺少相应的显示器件配备,在筛选了多款显示屏后,还是这款LCD显示屏的效果比较满意, 该显示屏的显示分辨率为160*80像素点,它采用SPI方式工作,为便于连接,原打算直接所用J2接口。 比较无奈的是该显示屏的供电引脚与J2接口的电源引脚是相反的,只好放弃这种设想,显示屏与开发板的连接如图1所示。 具体的连接关系是: SCL---P0.25 SDA---P0.26 RES---P0.24 DC---P0.27 CS---P0.10 BLK---P0.28   进行高低电平输出的语句定义如下: #define LCD_SCLK_Set   GPIO_PortSet(GPIO0, 1U << 25U) #defineLCD_SCLK_Clr   GPIO_PortClear(GPIO0, 1U << 25U) #define LCD_SDIN_Set   GPIO_PortSet(GPIO0, 1U << 26U) #define LCD_SDIN_Clr   GPIO_PortClear(GPIO0, 1U << 26U) #define LCD_RST_Set    GPIO_PortSet(GPIO0, 1U << 24U) #define LCD_RST_Clr    GPIO_PortClear(GPIO0, 1U << 24U) #define LCD_DC_Set     GPIO_PortSet(GPIO0, 1U << 27U) #define LCD_DC_Clr     GPIO_PortClear(GPIO0, 1U << 27U) #define LCD_CS_Set     GPIO_PortSet(GPIO0, 1U << 10U) #define LCD_CS_Clr     GPIO_PortClear(GPIO0, 1U << 10U) #define LCD_BLK_Set    GPIO_PortSet(GPIO0, 1U << 28U)     图1 显示屏连接   以GPIO口模拟SPI发送字节数据的函数是: void LCD_Writ_Bus(uint8_t dat) { uint8_t i; LCD_CS_Clr; for(i=0;i<8;i++) { LCD_SCLK_Clr; if(dat&0x80) LCD_SDIN_Set; else LCD_SDIN_Clr; LCD_SCLK_Set; dat<<=1; } LCD_CS_Set; }   发送8位数据的函数是: void LCD_WR_DATA8(uint8_t dat) { LCD_DC_Set; LCD_Writ_Bus(dat); }   发送16位数据的函数是: void LCD_WR_DATA(uint16_t dat) { LCD_DC_Set; LCD_Writ_Bus(dat>>8); LCD_Writ_Bus(dat); }   向寄存器发送8位数据的函数是: void LCD_WR_REG(uint8_t dat) { LCD_DC_Clr; LCD_Writ_Bus(dat); }   显示屏的初始化函数是: void Lcd_Init(void) { LCD_RST_Clr; Delay2(); LCD_RST_Set; Delay2(); LCD_WR_REG(0x11); delay1(); LCD_WR_REG(0x21); LCD_WR_REG(0xB1); LCD_WR_DATA8(0x05); LCD_WR_DATA8(0x3A); LCD_WR_DATA8(0x3A); LCD_WR_REG(0xB2); LCD_WR_DATA8(0x05); LCD_WR_DATA8(0x3A); LCD_WR_DATA8(0x3A); LCD_WR_REG(0xB3); LCD_WR_DATA8(0x05); LCD_WR_DATA8(0x3A); LCD_WR_DATA8(0x3A); LCD_WR_DATA8(0x05); LCD_WR_DATA8(0x3A); LCD_WR_DATA8(0x3A); LCD_WR_REG(0xB4); LCD_WR_DATA8(0x03); LCD_WR_REG(0xC0); LCD_WR_DATA8(0x62); LCD_WR_DATA8(0x02); LCD_WR_DATA8(0x04); LCD_WR_REG(0xC1); LCD_WR_DATA8(0xC0); LCD_WR_REG(0xC2); LCD_WR_DATA8(0x0D); LCD_WR_DATA8(0x00); LCD_WR_REG(0xC3); LCD_WR_DATA8(0x8D); LCD_WR_DATA8(0x6A); LCD_WR_REG(0xC4); LCD_WR_DATA8(0x8D); LCD_WR_DATA8(0xEE); LCD_WR_REG(0xC5); LCD_WR_DATA8(0x0E); LCD_WR_REG(0xE0); LCD_WR_DATA8(0x10); LCD_WR_DATA8(0x0E); LCD_WR_DATA8(0x02); LCD_WR_DATA8(0x03); LCD_WR_DATA8(0x0E); LCD_WR_DATA8(0x07); LCD_WR_DATA8(0x02); LCD_WR_DATA8(0x07); LCD_WR_DATA8(0x0A); LCD_WR_DATA8(0x12); LCD_WR_DATA8(0x27); LCD_WR_DATA8(0x37); LCD_WR_DATA8(0x00); LCD_WR_DATA8(0x0D); LCD_WR_DATA8(0x0E); LCD_WR_DATA8(0x10); LCD_WR_REG(0xE1); LCD_WR_DATA8(0x10); LCD_WR_DATA8(0x0E); LCD_WR_DATA8(0x03); LCD_WR_DATA8(0x03); LCD_WR_DATA8(0x0F); LCD_WR_DATA8(0x06); LCD_WR_DATA8(0x02); LCD_WR_DATA8(0x08); LCD_WR_DATA8(0x0A); LCD_WR_DATA8(0x13); LCD_WR_DATA8(0x26); LCD_WR_DATA8(0x36); LCD_WR_DATA8(0x00); LCD_WR_DATA8(0x0D); LCD_WR_DATA8(0x0E); LCD_WR_DATA8(0x10); LCD_WR_REG(0x3A); LCD_WR_DATA8(0x05); LCD_WR_REG(0x36); LCD_WR_DATA8(0x78); LCD_WR_REG(0x29); LCD_BLK_Set; }   用于擦除屏幕显示内容的函数是: void LCD_Clear(uint16_t Color) { uint16_t i,j; LCD_Address_Set(0,0,LCD_W-1,LCD_H-1); for(i=0;i<LCD_W;i++) { for (j=0;j<LCD_H;j++) { LCD_WR_DATA(Color); } } }   显示字符的函数是: void LCD_ShowChar(uint16_t x,uint16_t y,uint8_t num,uint8_t mode,uint16_t color) { uint8_t temp; uint8_t pos,t; uint16_t x0=x; if(x>LCD_W-16||y>LCD_H-16) return; num=num-' '; LCD_Address_Set(x,y,x+8-1,y+16-1); if(!mode) { for(pos=0;pos<16;pos++) { temp=asc2_1608[(uint16_t)num*16+pos]; for(t=0;t<8;t++) { if(temp&0x01)LCD_WR_DATA(color); else LCD_WR_DATA(BLACK); temp>>=1; x++; } x=x0; y++; } } else { for(pos=0;pos<16;pos++) { temp=asc2_1608[(uint16_t)num*16+pos]; for(t=0;t<8;t++) { if(temp&0x01)LCD_DrawPoint(x+t,y+pos,color); temp>>=1; } } } }   显示字符串的函数是: void LCD_ShowString(uint16_t x,uint16_t y,const uint8_t *p,uint16_t color) { while(*p!='\0') { if(x>LCD_W-16){x=0;y+=16;} if(y>LCD_H-16){y=x=0;LCD_Clear(RED);} LCD_ShowChar(x,y,*p,1,color); x+=8; p++; } }   进行显示测试的主程序是: int main(void) { gpio_pin_config_t led_config = { kGPIO_DigitalOutput, 0, }; CLOCK_SetClkDiv(kCLOCK_DivFlexcom4Clk, 1u); CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH); CLOCK_EnableClock(kCLOCK_Gpio0); CLOCK_EnableClock(kCLOCK_Gpio1); BOARD_InitPins(); BOARD_InitBootClocks(); BOARD_InitDebugConsole(); GPIO_PinInit(GPIO1, 2U, &led_config); GPIO_PinInit(GPIO0, 25U, &led_config); GPIO_PinInit(GPIO0, 26U, &led_config); GPIO_PinInit(GPIO0, 24U, &led_config); GPIO_PinInit(GPIO0, 27U, &led_config); GPIO_PinInit(GPIO0, 10U, &led_config); GPIO_PinInit(GPIO0, 28U, &led_config); Lcd_Init(); LCD_Clear(RED); LCD_ShowString(20,10,"MCXN947",YELLOW); LCD_ShowString(20,30,"LCD Test",YELLOW); GPIO_PortSet(GPIO0, 1U << 27U); GPIO_PortSet(GPIO0, 1U << 10U); while (1) { delay(); GPIO_PortToggle(GPIO1, 1u << 2U); } }   经程序的编译与下载,其显示效果如图2显示,后面就可以用它来完成显示的工作。   图2 显示效果

  • 2024-12-12
  • 回复了主题帖: 【MCXN947开发板测评】以按键切换色彩

    wangerxian 发表于 2024-12-12 16:10 这板子跑AI有什么想法呀? 还在看,主要学习,据说能进行人脸检测看看能不能实现。

  • 回复了主题帖: 【MCXN947开发板测评】以按键切换色彩

    秦天qintian0303 发表于 2024-12-12 12:16 这个板子板子资源很丰富   是的 ,一个个地慢慢体验。

  • 回复了主题帖: 【MCXN947开发板测评】以按键切换色彩

    Jacktang 发表于 2024-12-12 07:46 按键整的很酷炫 哈哈,热热闹闹的!

  • 2024-12-11
  • 发表了主题帖: 【MCXN947开发板测评】以按键切换色彩

    本帖最后由 jennyzhaojie 于 2024-12-11 22:41 编辑   在MCXN947开发板配有RGB_LED和按键,可进行GPIO口的输入和输出功能的测试,RGB_LED和按键ISP的电路如图1所示。     图1  RGB灯和ISP键电路   在对相关引脚进行输入、输出功能配置后,通过对按键状态的配备,可实现一个8进制的计算器,将计算器的值与7种色彩建立起对应的关系,就实现了以按键切换色彩的作用。   实现了按键切换色彩的主程序为: int main(void) { uint8_t n=0; gpio_pin_config_t led_config = { kGPIO_DigitalOutput, 0, }; gpio_pin_config_t key_config = { kGPIO_DigitalInput, 0, }; CLOCK_SetClkDiv(kCLOCK_DivFlexcom4Clk, 1u); CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH); CLOCK_EnableClock(kCLOCK_Gpio0); CLOCK_EnableClock(kCLOCK_Gpio1); BOARD_InitPins(); BOARD_InitBootClocks(); BOARD_InitDebugConsole(); GPIO_PinInit(GPIO0, 10U, &led_config); GPIO_PinInit(GPIO0, 27U, &led_config); GPIO_PinInit(GPIO1, 2U, &led_config); GPIO_PinInit(GPIO0, 6U, &key_config); GPIO_PortSet(GPIO0, 1U << 10U); GPIO_PortSet(GPIO0, 1U << 27U); GPIO_PortSet(GPIO1, 1U << 2U); while (1) { if ((GPIO_PinRead(GPIO0, 6U))==0) { if (n==0) { GPIO_PortClear(GPIO0, 1U << 10U); } if (n==1) { GPIO_PortSet(GPIO0, 1U << 10U); GPIO_PortClear(GPIO0, 1U << 27U); } if (n==2) { GPIO_PortSet(GPIO0, 1U << 27U); GPIO_PortClear(GPIO1, 1U << 2U); } if (n==3) { GPIO_PortSet(GPIO1, 1U << 2U); GPIO_PortClear(GPIO0, 1U << 10U); GPIO_PortClear(GPIO0, 1U << 27U); } if (n==4) { GPIO_PortSet(GPIO0, 1U << 10U); GPIO_PortClear(GPIO1, 1U << 2U); } if (n==5) { GPIO_PortSet(GPIO0, 1U << 27U); GPIO_PortClear(GPIO0, 1U << 10U); } if (n==6) { GPIO_PortClear(GPIO0, 1U << 10U); GPIO_PortClear(GPIO0, 1U << 27U); GPIO_PortClear(GPIO1, 1U << 2U); } if (n==7) { GPIO_PortSet(GPIO0, 1U << 10U); GPIO_PortSet(GPIO0, 1U << 27U); GPIO_PortSet(GPIO1, 1U << 2U); } delay2(); while(((GPIO_PinRead(GPIO0, 6U))==0)); n=(n+1)%8; } } }   经程序的编译和下载,可得到预期的效果,参见图2至图8所示。   图2 显示红色     图3 显示绿色     图4 显示蓝色     图5 显示黄色     图6 显示粉色     图7 显示亮蓝     图8 显示白色  

  • 2024-12-09
  • 发表了主题帖: 【MCXN947开发板测评】开发环境搭建及下载测试

    本帖最后由 jennyzhaojie 于 2024-12-9 12:17 编辑 再次见到NXP的产品,有种重逢的感觉。其实自己接触NXP的产品要比STM的产品早,是从NXP的LPC1114开始到LPC54628,这主要是依托以前有一个NXP的中文社区来宣传和推广其产品。后来该社区被归并,便没再接触这方面的产品,所用这次见到MCXN947,有一种重逢的情怀。 MCXN947开发板的外观如图1所示,其做工还依然是那样工整和紧凑,看上去有种密不透风的感觉。该开发板采用双面放置器件,所用在外观使人产生一种精巧感。   图1 开发板外观   随开发板还一同配有2条Type C接口的数据线,用于供电和调试下载等。 在上电后,其效果见图2所示。   图2 上电效果   MCXN947是支持多种工具进行开发的,为了减少安装软件的种类,仍所用常见的MDK,但版本要选择较新的。 在打开例程的后,其界面效果如图3所示。     图3 开发工具界面   在安装芯片支持升级包后,看见的图4所示的芯片支持。     图4 芯片支持   在设置好生成目标代码后,其编译效果如图5所示。     图5 完成编译   在连接调试接口的情况下,其连接状态如图6所示。   图6 连接状态   经程序下载,其完成情况如图7所示,此时开发板的红色LED灯开始快速的闪动起来。     图7 完成下载   此时,若打开串口调试工具,还可见图8所示的输出信息,说明LED和串口都正常地工作了起来,这样就为后续的开发测评铺平了道路。   图8 串口测试  

  • 2024-12-02
  • 回复了主题帖: 测评入围名单:NXP 边缘AI FRDM-MCXN947开发板

    个人信息无误,确认可以完成测评分享计划.

最近访客

< 1/3 >

统计信息

已有47人来访过

  • 芯积分:217
  • 好友:--
  • 主题:31
  • 回复:75

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言