第1节 修改驱动中的底层代码
推荐给好友
打印
加入收藏
更新于2009-04-21 15:58:12

与MCS51系列MCU不同,ST公司的STM32系列属于流行的SOC概念的MCU,片内提供了丰富的硬件模块,比如SPI、UART、IIC接口,以及CAN、USB接口等,而全系列都提供了多个通道的DMA模块使得它在同等处理能力的MCU之中脱颖而出;此外STM32系列MCU还提供了多通道的AD模块,以及部分型号提供了DAC模块,而STM32提供了功能丰富的定时器资源,足以让其在各种伺服控制系统当中的应用游刃有余。

拥有如此之多的片上硬件模块,也使得STM32系列的MCU在各个硬件模块的寄存器设置上变得越来越繁杂,不过ST公司为STM32配套了一个应用库,基本上涵盖了全系列MCU的片上硬件模块的底层代码,用户可以方便的调用并基于该库来进行自身更应该专注的应用开发,而不需要太多的了解STM32的各个硬件模块的结构。

本章内容所介绍的将通用版LCD驱动程序移植到STM32的程序便是基于ST为STM32提供的应用库的,在后面将会花一些内容来大概介绍一下该例程的软件结构。

更多有关于STM32的内容请感兴趣的读者可以在网络上查找相关的资料参考,这里不作过多介绍。

5.1.1. 修改LCD_PortConfig.h的端口配置
STM32是不支持端口的位操作指令的,所以对于端口的操作可以利用对端口的读—改—写方式进行,即读回当前端口的输出状态,然后根据需要改变输出状态的端口来修改读回的值,然后再将改后的值输出至端口;不过STM32系列的MCU提供了置位/清零指定端口的寄存器,这点还是非常方便使用的。

以下便是修改后的端口配置头文件:


stm32f10x_lib.h是STM32应用库的头文件,包含它后就可以使用库中头文件定义的STM32的寄存器以及库中所提供的API函数。
本例中在涉及到操作连接着LCD的端口时,并没有使用库中的函数,而是直接对寄存器进行了操作,这样可以在频繁调用LCD端口操作的宏定义时省掉不必要的函数调用时间。具体的寄存器的设置请参考STM32的编程手册。

类似于GPIOB、以及GPIOC的结构体定义,在STM32的应用库中的头文件:stm32f10x_map.h当中都有定义,请自行参阅。
本例所对应的STM32与LCD模块的连接电路图如下图所示:


5.1.2. 修改底层驱动功能函数
而在LCD_Init函数上也稍稍作一下修改,实际上也只是针对STM32的运行速度较快,将复位时的延时时间延长了而已,这点可以从附带的例程中看到:

 

上一节                    下一节





 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.