下面是小编为大家整理的STM32学习体会【优秀范文】,供大家参考。
STM32 学习体会
STM32 学习体会
学习 STM32 也有一段时间了,周围的人也在学习这款单片机,感觉它是越来越流行,没办法,功能强大,又便宜,谁不愿意用呢。搞不懂 AVR,现在都快被挤兑成诺基亚了,还是死守价格不便宜!没学的就跳过啊,STM32,MSP430 都是不错的选择
因为暑假的时候学了MSP430,所以现在学 STM32 让我感觉很容易就上手了,相比 51,主要是初始化更加繁琐了,没办法嘛,功能强大,寄存器就多,多了配置起来就复杂一些。
个人感觉一开始还是走寄存器路线,因为只有学懂了底层的东西才能更好的理解它的功能是怎么实现的,才能从中找出来捷径。以后的话貌似还可以走库函数路线,那样可以大大的缩短开发周期。
几乎所有的单片机开始都是在介绍 IO 口,但是我感觉在此之前应该学习一下时钟,STM32的时钟使能分的HH特别细,每一个外设都有一个对应的时钟使能位,还有相对应的复位位,基本上都在 RCC->APB1ENR,RCC->APB2ENR两个寄存器里面,几乎初始化每一个外设之前,包括 IO 口,都要使能它的时钟,STM32 还有一个后背区,当单片机复位的时候,这个区域是不会复位的,它的 RTC 模块只要有后备电源,即使单片机关机了,也可以给你提供大概 136 年的实时时钟计时!
下面就是 IO 口了,它的 IO 口有 8 种模式,
但是常用的就那么几种,推拉式输出,推拉式输入,复用功能等等,每四位控制一个 IO 口,最常用的就是 0X8,0X3。使能了时钟,设置好模式,就可以使用它的 IO 了,输出电平的高低就是控制 ODR,输入就是读 IDR,但是这两个寄存器只能整体访问。但是 STM32 所有的位带操作为我们可以像操作 51 一样操作它的 IO 提供了可能,例如,如果要控制PA1 这一位,只要对 PAout(1),PAin(1)操作就行了,免去了数据的位运算!还有一点就是注意特殊 IO,因为有的 IO 复位的时候默认是复用功能,如和 JTAG 有关的几个 IO,如果你想把它当成普通 IO 使用,先把 JTAG 禁用了之后就 OK 了。
再后面就是外部中断了,它的每个 IO 都可以提供中断功能,对应着一条中断线,但中断线是有复用的,至于是哪一种中断,就要看它的中断标志寄存器了,如 PA1,PB1,PC1,PD1,PE1共用 EXTI1 这一条中断线,几条中断线又共用一个中断向量,当然,有的是独享的。如 RTC 的秒中断和闹钟中断还有溢出中断,共用了 RTCIRQChannel 这个中断向量,进去中断服务程序之后,通过判断中断标志寄存器的哪一位置位了,就可以知道是哪个中断了。但是,中断标志要软件清零!这点很重要。STM32 还有一点很人性化,就是中断向量可以重新映射!虽然有些限制,但还是很人性化的,给你画 PCB 的时候提供了更多选择!至于中断的配置,按部就班的去弄就好了!
后面还玩了看门狗,这个可以防止程序跑飞,不过
目前对我们来说,作用不大。不过学过 MSP430 的朋友要注意,MSP430 的看门狗复位时默认开启,而 STM32 的默认值也是关闭!如果对它不熟悉,就先别用,因为狗饿了就会咬你的。
后面玩了一下 TFTLCD,得说明一下,触摸屏,它的“触摸”和“屏”是分开的,有不同的控制器,要分别编写驱动程序。我目前只弄了屏幕显示,这种彩屏最烦人的就是初始化,我的这块控制器有 200 多命令,所以告诉你一个简便方法,复制粘贴,然后做细节改动,因为我们不是做屏幕开发的,没必要去写这个初始化。之后就简单了,单点操作的话,先写入坐标,然后写入 RGB 的值,我的屏幕是 565格式,就是 R 有五位控制,G 有 6 位控制,B 有 5 位控制,值越大,颜色越深!唯一烦人的就是他没有字库,要自己制作字库,建议把基本的 ASCII 中的字符做成字库存在头文件中。因为很少用汉字,而且汉字量实在是太大了!用 PC2LCD取模软件制作。
昨天买了一块 OLED 屏幕,它是自发光的,所以看起来很舒服,而且亮度可以软件调控,大概只有硬币大小,就花了我 40 块钱,不过分辨率还可以,128×64,用过 12864LCD 的可以想象一下,同样的像素点,缩小到硬币大小,而且还是自发光,效果确实很漂亮。它的操作也不难,支持 5 种接口(这个要看控制器型号),有 8080,6080,三线SPI,四线 SPI,IIC,不过 SPI 模式下不能进行读操作。在8080 控制模式下,读的时候最好来一次假读。同样的,初始
化去复制粘贴就好了!然后每次写入都要求是整个字节写入。
时间原因,先写到这里,定时器改天再写。