百问网--七天物联网学习笔记(1)

课程的学习内容是基于物联网的智能家居控制,采用 STM32 为主控芯片,使用手机小程序实现远程控制门铃、控制LED的功能。

课程整体的集成开发环境介绍

 整个项目的软件架构:

外设驱动层:串口初始化(包括对printf的重定向);按键设备的驱动,LED灯的初始化和状态切换(实际就是对GPIO的操作); 环形缓冲区的初始化、读写数据、清除数据等操作;ESP8266的初始化

平台层:就是将底层驱动及具体的功能实现封装以适应不同的MCU平台,在移植过程中更改底层驱动即可。

中间层:FreeRTOS内核文件,使用它来完成实时操作,使不同任务之间的功能配合更紧密,程序更流畅。

协议层:基于FreeRTOS的MQTT协议栈

设备层:将各个设备封装以对接MQTT协议栈的函数接口,方便传参

应用层:led的控制、按键信息的读取和上报,MQTT主题的订阅和发布。

 课程使用的是STM32系列芯片,结合课程中老师对启动文件的讲解,总结有:

  • 初始化堆栈指针 SP=_initial_sp , 初始化 PC 指针=Reset_Handler

  • 板子上电后,跳转到162行Reset_Handler复位函数处(因为PC 指针 = Reset_Handler),163-165三句声明不是执行代码,所以从166行“LDR R0, =SystemInit”开始执行第一句汇编代码(这也是用keil调试时,点击复位按钮后会跳转到的语句)

  • 然后调用SystemInit函数进行系统时钟配置( SYSCLK(系统时钟) = 72MHZ,AHB总线时钟 = 72MHZ,APB1总线时钟 = 36MHZ,APB2总线时钟 = 72MHZ,PLL时钟 = 72MHZ,PLL2时钟 = 40MHZ )

  • 调用 C 库函数 _ _main,该函数的一个主要作用是初始化堆栈(即 _ _main执行过程中会调用359行处用户自定义的函数 __user_initial_stackheap进行初始化堆栈),最后跳转到C程序中的main函数

  • AREA指令:其中比较重要的标号为“READONLY”或“READWRITE”,“READONLY”表示该段为只读属性,联系到STM32的内部存储介质,可知具有只读属性的段保存于FLASH区,即0x8000000地址后。而“READONLY”表示该段为“可读写”属性,可知“可读写”段保存于SRAM区,即0x2000000地址后。由此可以从第3、7行代码知道,堆栈段位于SRAM空间。从第82行可知,中断向量表放置与FLASH区,而这也是整片启动代码中最先被放进FLASH区的数据。因此可以得到一条重要的信息:0x8000000地址存放的是栈顶地址__initial_sp,0x8000004地址存放的是复位中断向量Reset_Handler(STM32使用32位总线,因此存储空间为4字节对齐)。

其中,物联网智能家居项目的每层架构实现的函数有驱动层、平台层、协议层、设备层、应用层等

 

以上为学习百问网的【7天物联网智能家居】课程的学习笔记,百问网的老师的视频课还有文字直播课,能把问题讲的很清楚,QQ群内的答疑也很及时,适合新手入门和提高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值