单片机与嵌入式(物联网开发)学习之旅——年终总结

硬件学习路线

写在前面

通过加入实验室,组队打比赛是最好的学习的方式。

C语言:

首先学会C语言,在硬件里,不会涉及到太过于复杂的算法,它更关注于底层。掌握常用的数据结构如顺序表,链表,栈。重点掌握指针和结构体的工作过程。

推荐课程:

C语言(118小时课程)

c语言编程 C语言入门 c语言(C语言程序设计教程 c语言视频教程 c语言零基础入门教程 学习c语言 c语言视频教程 c语音 C语言教程 C语言编程项目 C语言哔哩哔哩bilibili

单片机

从51单片机开始。第一件事,买一块开发板学习,可以通过开发板的配套视频进行。

学习掌握外设:

LED灯 ,数码管,按键,串口,定时器。

掌握外设常见应用 :

  1. 动态驱动LED灯和数码管

  2. 准确灵敏判断按键的三种状态(按下未松开,按下弹起,松开)

  3. 用定时器产生PWM波以呼吸灯。

  4. 串口通信接受不定长,无任意格式的数据。

  5. 学习IIC协议,单总线协议。

  6. 进行ADC模数转换采样以及DAC数模转换输出指定电压。

  7. 进行Epprom或FLASH的读写。

推荐课程:

从零学郭天祥10天入门学会51单片机完整版 0基础哔哩哔哩bilibili

还有一种更为系统的方法,看开发板的使用手册查阅资料,深究底层实现。

嵌入式学习(物联网方向)

买一块STM32的开发板然后通过资料或视频进行学习。

STM32的开发板学习外设与51开发板学习外设是一样的。

STM32力推学习HAL库快速入门开发。配合CUBEMX生成初始化代码让底层实现不再那么繁琐。

掌握:

  1. 点LED灯和驱动蜂鸣器。

  2. 点可调节亮度的灯。(PWM调节)

  3. 定时器。

  4. 外部中断。

  5. 串口通信。(串口接受中断,串口空闲中断)

  6. ADC和DAC。(ADC的单通道采样,ADC非DMA方式的多通道采样。ADC转换完成中断)。

  7. DMA减轻CPU负担,实现DMA的串口发送和串口接受。实现DMA的ADC多通道采样。

  8. RTT实时时钟。

  9. 看门狗监督程序运行。(这个我认为是可用可不用的,如果程序的设计足够的好,就不会有死机的可能,当然预防物理上的意味情况)。

  10. FLASH的读取,FLASH存取任意类型的数据。(如结构体数据)

  11. WIFI通信连接云服务器上报数据和命令下发。

  12. ESP32,ESP8266,4G模块,IOT模块使用。

  13. LORA通信控制其他节点,以及监听指定信道的数据。

  14. 引入RT-Thread操作系统,FreeRTOS,鸿蒙HarmonyOS等嵌入式实时操作系统提升效率和性能。

STM32资料: 买开发板所送的资料就是最好的资料,没有成本和实践一切只是镜花水月。

一般来说: 51的单片机和STM32的程序都采用While大循序轮询加中断标记的方式处理任务。这种方式非常的通用和容易理解,中断标记能够及时的告诉程序那些事情要做于是就做好标记,在While大循环里轮询这些标记则使得任务能够得到处理。

使用RTOS,则把用户的任务与系统的内核任务进行分开,如STM32使用双堆栈指针MSP和PSP,把CPU(目前一般使用的是单核的CPU)的工作模式分为用户态和系统态,且它们分别使用不同的堆栈;这样栈互相分离显得更加的安全,OS在RAM一般划分极小的一块区域运行,而用户的程序则以多线程(多任务)的方式执行;这里面涉及到CPU的任务调度。但对于开发者来说OS实现了开发用户程序与底层的脱耦,以前我们跑裸机会操作寄存器(STM32以它封装的HAL库函数的方式操作寄存器)。目前看来,没有任何耦合是加几层中间层解决不了的。有的操作系统甚至封装了一套自己的一套对底层开发的API。开发者只需轻松调用而无需知道复制的底层实现则可轻而易举地完成开发。

如何加深学习和复习?

费曼学习法,多分享,多交流,多写博客进行自检。

物联沃分享整理
物联沃-IOTWORD物联网 » 单片机与嵌入式(物联网开发)学习之旅——年终总结

发表评论