当前位置: 首页 > news >正文

单片机IWIP SNTP实验

单片机 :STM32F407
开发板:DMF407电机开发板
平台:keil V5.31

HSE 为8MHZ
HSI为16MHZ

主函数

int main(void) { HAL_Init(); /* 初始化HAL库 */ sys_stm32_clock_init(336, 8, 2, 7); /* 设置时钟,168Mhz */ delay_init(168); /* 延时初始化 */ usart_init(115200); /* 串口初始化为115200 */ usmart_dev.init(84); /* 初始化USMART */ led_init(); /* 初始化LED */ lcd_init(); /* 初始化LCD */ key_init(); /* 初始化按键 */ rtc_init(); /* 初始化RTC */ rtc_set_wakeup(RTC_WAKEUPCLOCK_CK_SPRE_16BITS, 0); /* 配置WAKE UP中断, 1秒钟中断一次 */ my_mem_init(SRAMIN); /* 初始化内部SRAM内存池 */ my_mem_init(SRAMCCM); /* 初始化内部SRAMCCM内存池 */ freertos_demo(); /* 创建lwIP的任务函数 */ }
void freertos_demo(void) { /* start_task任务 */ xTaskCreate((TaskFunction_t )start_task, (const char * )"start_task", (uint16_t )START_STK_SIZE, (void * )NULL, (UBaseType_t )START_TASK_PRIO, (TaskHandle_t * )&StartTask_Handler); vTaskStartScheduler(); /* 开启任务调度 */ }
void start_task(void *pvParameters) { pvParameters = pvParameters; g_lwipdev.lwip_display_fn = lwip_test_ui; lwip_test_ui(1); /* 加载后前部分UI */ while (lwip_comm_init() != 0) { lcd_show_string(30, 110, 200, 16, 16, "lwIP Init failed!!", RED); delay_ms(500); lcd_fill(30, 50, 200 + 30, 50 + 16, WHITE); lcd_show_string(30, 110, 200, 16, 16, "Retrying... ", RED); delay_ms(500); LED1_TOGGLE(); } while (!ethernet_read_phy(PHY_SR)) /* 检查MCU与PHY芯片是否通信成功 */ { printf("MCU与PHY芯片通信失败,请检查电路或者源码!!!!\r\n"); } while ((g_lwipdev.dhcpstatus != 2) && (g_lwipdev.dhcpstatus != 0XFF)) /* 等待DHCP获取成功/超时溢出 */ { vTaskDelay(5); } taskENTER_CRITICAL(); /* 进入临界区 */ /* 创建lwIP任务 */ xTaskCreate((TaskFunction_t )lwip_demo_task, (const char* )"lwip_demo_task", (uint16_t )LWIP_DMEO_STK_SIZE, (void* )NULL, (UBaseType_t )LWIP_DMEO_TASK_PRIO, (TaskHandle_t* )&LWIP_Task_Handler); /* LED测试任务 */ xTaskCreate((TaskFunction_t )led_task, (const char* )"led_task", (uint16_t )LED_STK_SIZE, (void* )NULL, (UBaseType_t )LED_TASK_PRIO, (TaskHandle_t* )&LEDTask_Handler); vTaskDelete(StartTask_Handler); /* 删除开始任务 */ taskEXIT_CRITICAL(); /* 退出临界区 */ }
void lwip_demo_task(void *pvParameters) { pvParameters = pvParameters; lwip_demo(); while (1) { vTaskDelay(5); } }
void lwip_demo(void) { struct hostent *server; ip_addr_t sntp_server; server = gethostbyname((char *)HOST_NAME); /* 对aliyun服务器地址解析 */ memcpy(&sntp_server,server->h_addr,server->h_length); /* 把解析好的地址存放在mqtt_ip变量当中 */ sntp_setoperatingmode(SNTP_OPMODE_POLL); sntp_init(); /* 加入授时中心的IP信息 */ sntp_setserver(0, &sntp_server); lcd_show_string(5, 170, 210, 16, 16, "wating.....", RED); }

测试结果:

http://www.jsqmd.com/news/1099453/

相关文章:

  • 3分钟学会Untrunc:快速拯救损坏视频文件的终极指南
  • 3-IPV6域名解析
  • Web作业(八)
  • 好用的亚洲汽美抛光赛事供应商
  • 实战掌握Adobe软件激活:全面解析GenP 3.0破解工具高效配置
  • 后端性能瓶颈排查实战:从慢接口到系统优化的完整落地思路
  • 66.TIA V17 实测无 BUG!带 20ms 软件滤波、边沿检测、急停联锁 PLC 工程
  • STM32单片机家用智能热水器水温水位检测加热恒温控制无线app设计2(设计源文件+万字报告+讲解)(支持资料、图片参考_降重降ai)
  • 让AI读懂你的大脑:BrainAgent用LLM驱动多Agent实现脑信号全流程自动分析
  • 《Debezium + Kafka Connect 实战:从零搭建 MySQL CDC 数据管道,踩坑全记录》
  • 2026效率榜!好用的降AIGC网站全盘点,过审成功率直接拉满
  • HCIA-Datacom 课程学习心得
  • 金属浮栅提升NAND性能
  • 2026论文顶级降AIGC平台大曝光:一键改写直达人工原创!
  • 基于51单片机智能气象仪 环境检测系统 风速风向采集 温湿度套件2(设计源文件+万字报告+讲解)(支持资料、图片参考_降重降ai)
  • 大部分人都在管别人的闲事
  • 【Claude】Claude Code 代码审查实战指南:一次对话审出 26 个 Bug 的方法论
  • 把 quicklink 的预加载思想搬到 API 层:我设计了一套‘懒请求调度器’,首屏并发从 9 降到了 2
  • Tensor 是什么?PyTorch 里最重要的对象讲清楚
  • 而 C++ 就是这种能自举的编程语言
  • 基于PI外环-FCS-MPC内环的永磁同步电机双环调速系统仿真分析(Simulink仿真实现)
  • GitLab开发流程实践
  • CSDN自动化测试_草稿
  • 【最新测评】有没有降AI率的靠谱网站推荐?2026年实测15款降AI神器,省钱又高效!
  • Go模块管理教程
  • C++继承与多态解析
  • 【Claude】Claude Code CLAUDE.md 记忆系统完全指南:让 AI 永远记得你的项目规范
  • 基于单片机智能点滴控制系统智能输液非接触式液位检测心率监测33(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 临沂GEO技术应用与合规解析
  • 别再搞混了!JVM的Minor GC、Major GC、Full GC 到底有啥区别?