在线时间95 小时
UID3332856
注册时间2016-11-28
NXP金币203
该用户从未签到
金牌会员
- 积分
- 1025
- 最后登录
- 2024-3-31
|
1、项目名称:
”智家中控器“
2、项目简介
智家中控器是在智能家居中心,实时采样智能家居电器的信号并可以远传和远控的中心控制器。
3、硬件
3.1 NXP LPCXpresso54628
3.2 智能家居演示迷你屋,含灯光小电机等
3.3 后台远控系统采用云平台
4、 软件
4.1 MCUxpresso IDE 11.3.0,官网免费下载注册使用
4.2 SDK 2.9.0 LPCXpresso54628 ,使用SDK builder自定义生成,包含驱动和范例代码
4.3 GUI Builder for LVGL UI 开发
5、开发过程
5.1 安装MCUxpresso IDE 11.3.0和SDK 2.9.0 LPCXpresso54628
5.2 安装GUI Builder
5.3 首先使用范例代码,生成并输出GUI代码
5.4 创建一个新的工程,并用lvgl_guider作为模板程序
5.5 增加引脚定义,在board.c, board.h, pinmux.c, pinmux.h这个几个文件中正确定义选择的引脚,主要是添加enet对应以太网控制器的引脚。
5.6 添加lwip库,并加入到include,定义freeRTOS.h,正确定义freeRTOS,可以使用baremetal硬开发,不过还是freeRTOS更快,但是不省心,需要透彻了解thread和通信机制,以及正确设定ticktime,内存和heap的设定,只有全部设定正确才能启动的。
5.7 把GUI builder生成的代码合并到项目中去。
5.8 启动build,然后debugg,就可以下载到开发板中。
6、阶段工作展示
6.1 完成后正确启动了LCD屏,并可以正确工作。
6.2 在console可以正确显示工作流程,并启动以太网控制器,开始ping远程的mqtt服务器,虽然失败,但是流程比较完整了。
6.3 主程序代码如下
- int main(void)
- {
- BaseType_t stat;
- static struct netif netif;
- #if defined(FSL_FEATURE_SOC_LPC_ENET_COUNT) && (FSL_FEATURE_SOC_LPC_ENET_COUNT > 0)
- static mem_range_t non_dma_memory[] = NON_DMA_MEMORY_ARRAY;
- #endif /* FSL_FEATURE_SOC_LPC_ENET_COUNT */
- ip4_addr_t netif_ipaddr, netif_netmask, netif_gw;
- ethernetif_config_t enet_config = {
- .phyHandle = &phyHandle,
- .macAddress = configMAC_ADDR,
- #if defined(FSL_FEATURE_SOC_LPC_ENET_COUNT) && (FSL_FEATURE_SOC_LPC_ENET_COUNT > 0)
- .non_dma_memory = non_dma_memory,
- #endif /* FSL_FEATURE_SOC_LPC_ENET_COUNT */
- };
- CLOCK_EnableClock(kCLOCK_InputMux);
- /* Init board hardware. */
- /* attach 12 MHz clock to FLEXCOMM0 (debug console) */
- CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
- BOARD_InitPins();
- BOARD_BootClockPLL220M();
- BOARD_InitDebugConsole();
- BOARD_InitSDRAM();
- /************* MQTT task ****************/
- generate_client_id();
- mdioHandle.resource.csrClock_Hz = EXAMPLE_CLOCK_FREQ;
- IP4_ADDR(&netif_ipaddr, 0U, 0U, 0U, 0U);
- IP4_ADDR(&netif_netmask, 0U, 0U, 0U, 0U);
- IP4_ADDR(&netif_gw, 0U, 0U, 0U, 0U);
- tcpip_init(NULL, NULL);
- mqtt_client = mqtt_client_new();
- if (mqtt_client == NULL) {
- PRINTF("mqtt_client_new() failed.\r\n");
- while (1)
- { }
- }
- netifapi_netif_add(&netif, &netif_ipaddr, &netif_netmask, &netif_gw, &enet_config, EXAMPLE_NETIF_INIT_FN, tcpip_input);
- netifapi_netif_set_default(&netif);
- netifapi_netif_set_up(&netif);
- netifapi_dhcp_start(&netif);
- PRINTF("...MQTT client is ready to go... \r\n");
- if (sys_thread_new("lwip_task", lwip_thread, &netif, APP_THREAD_STACKSIZE, APP_THREAD_PRIO) == NULL)
- {
- LWIP_ASSERT("main(): Task creation failed.", 0);
- }
- /************** lvgl Task ****************/
- PRINTF("...Try to create littlevgl task...\r\n");
- stat = xTaskCreate(LVGL_thread, "littlevgl Task", configMINIMAL_STACK_SIZE + 800, NULL, tskIDLE_PRIORITY + 2, NULL);
- if (pdPASS != stat)
- {
- PRINTF("Failed to create littlevgl task...\r\n");
- while (1)
- ;
- }
- vTaskStartScheduler();
- for (;;)
- { }
- /* should never get here */
- }
复制代码
6.4 主要程序附件如下,主要的程序目录压缩文件如附件供参考。
source.zip
(14.72 KB, 下载次数: 2)
|
|