微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM32学习体会

STM32学习体会

时间:12-01 来源:互联网 点击:
学习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控制模式下,读的时候最好来一次假读。同样的,初始化去复制粘贴就好了!然后每次写入都要求是整个字节写入。
时间原因,先写到这里,定时器改天再写。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top