个人觉得还是要掌握一点基础知识才能开始学。从硬件和软件两个方面来说,首先硬件方面,学单片机要懂基本的电子方面的知识,数电和模电是最基础的,一般搞嵌入式的都要能看得懂原理图,需要知道自己的输入、输入分别是什么,这就牵涉到一些比如GPIO、UART、I2C、SPI之类的概念,把这些基本的知识弄懂了才知道怎么去写代码实现期望的功能;其次,从软件方面来说,stm32单片机都是用C语言编程实现,所以C语言是必须要掌握的,不需要很熟练,除了基本的语法,位运算、指针操作是需要掌握的,最基本的是要知道怎么去操作寄存器。综上所述,建议还是先学一点基础的知识再开始学stm32单片机,这样会入门得快一点。当然,也可以直接学,然后在学的过程中碰到某个知识点的时候再去补这方面的知识,这样的话可能会学得稍微痛苦一些。
不建议在没有模电数电的知识背景学Stm32,除非你只是简单的玩一玩arduino或者51,比如用51单片机点灯到也可以,但是不能深入学习单片机,因为你没有接触过硬件,连三极管,Mos管都不懂,比如很简单的推挽输出,振荡器等等这些你不知道,本来是很简单的东西,但是没有模电相关的知识背景的话理解起来就非常困难。纯C语言学习离单片机还是有一定的距离,毕竟单片机还有硬件部分。
可以直接学习STM32单片机。
不过问题在于你想要发展的方向。stm32单片机本身没有什么难度。掌握它,本质上和掌握51单片机没什么区别。关键是你想用它来做什么,也就是应用的方向。
stm32本身可以裸跑程序,也就是直接用C开发一个程序烧进去执行。也可以跑一些简单的操作系统,如uCOS。芯片本身可以用作自动控制核心,用于工业生产上的自动化;也可以用来开发智能家居的产品。
所以,如果想很好的使用stm32的话,还是要把模电数电的基础补上,甚至自动化控制原理也很重要。如果想跑一些简单的操作系统,那么操作系统原理这门课也需要有所涉猎。
stm32的开发属于嵌入式开发。嵌入式开发本身只是一种技术手段,集合了硬件设计,PCB画图,程序编写,操作系统的使用,应用程序的开发等等内容。关键还是要看用于哪个方向以及什么行业。只有结合了具体的方向,在这个方向上积累的行业经验才是最有价值的。