打印

百为STM32开发板教程之一——LED流水灯

[复制链接]
6497|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xi_liang|  楼主 | 2013-7-19 14:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
LED流水灯是单片机世界里的hello world,我们学习一门新的MCU都是从它开始。下面就介绍一下怎么点亮百为STM3210E-EVAL开发板的LED灯

其实这个LED流水灯并不简单,要理解整个程序,建议大家看下这个:我翻译的书《一个内幕者对STM32的介绍》

但刚开始学,书也不一定看得明白,所以在这里我以实例给大家演示一下

看下百为STM3210E-EVAL开发板上LED的电路图:





开发板上4个LED是接到STM32的4个IO口上的,要点亮LED,只要在这4个IO上输出对应的高电平

那如何让STM32在PF6~PF9这4个IO上输出高点平呢
首先要看下《STM32F10xxx参考手册CD00171190.pdf》里关于IO端口的介绍,第8章 通用和复用功能I/O(GPIO和AFIO)

百为STM3210E-EVAL开发板上的CPU是STM32F103ZET6,有GPIOA~GPIOG七组IO,每组IO有16个引脚GPIO_Pin_0~GPIO_Pin_15,如板上的PF0~PF15

其中每个IO端口有2个32位的寄存器(GPIOx_CRL和GPIOx_CRH)配置,每个引脚由其中4位进行配置,
4位字段是由一个两位的配置字段和一个两位的模式字段组成


要设置这4位,要看下GPIOx_CRL,GPIOx_CRH的寄存器定义


由上图可以看出GPIOF_CRL的31~28位是设置PF7的,GPIOF_CRL的27~24位是设置PF6的
GPIOF_CRH的3~0位是设置PF8的,GPIOF_CRH的7~4位是设置PF6的

这里我们把每个引脚设置为
CNF[1:0]    = 00:通用推挽输出模式
MODE[1:0] = 11 : 输出模式,最大速度50MH

GPIOF_CRL,GPIOF_CRH的寄存器地址分别是0x40011C00,0x40011C04
这个寄存器是怎么得来的,STM32数据手册里并没有直接给出,在《一个内幕者对STM32的介绍》4.1.1 寄存器地址查阅 这里有介绍怎么通过上面的偏移地址算出。

配置好,我们就可以直接在端口输出数据寄存器GPIOF_ODR输出高电平控制LED了,GPIOF_ODR有16位,每个位对应GPF的一个引脚,PF0~PF15


下面就可以编写LED流水灯程序了,激动啊,等了好久终于等到今天

/* main.c */
#define GPIOF_CRL  (*(volatile unsigned int *)0x40011C00)        //端口配置低寄存器
#define GPIOF_CRH  (*(volatile unsigned int *)0x40011C04)        //端口配置高寄存器
#define GPIOF_ODR  (*(volatile unsigned int *)0x40011C0C)        //端口输出数据寄存器
#define RCC_APB2ENR  (*(volatile unsigned int *)0x40021018)        //

void delay(void)
{
        unsigned int i;
        for(i=0;i<500000;i++);
}
int main()
{
        int i;
        RCC_APB2ENR |= 1<<7; //打开GPIOF的时钟
        GPIOF_CRL = ( GPIOF_CRL & 0x00ffffff ) | 0x33000000; //配置PF6,PF7为通用推挽输出模式,最大速度50MH
        GPIOF_CRH = ( GPIOF_CRH & 0xffffff00 ) | 0x00000033; //配置PF8,PF9为通用推挽输出模式,最大速度50MH

        while(1)
        {
                for(i=6;i<=9;i++)
                {
                        GPIOF_ODR = ( GPIOF_ODR & 0xfffffc3f ) | ( 1<<i );  //在PF6~PF9引脚轮流输出高电平
                        delay();
                }
        }
}
沙发
huangfeng33| | 2013-7-20 16:48 | 只看该作者
过来支持一下楼主,鼓励共享,期待楼主出下文.

使用特权

评论回复
板凳
hawksabre| | 2013-7-20 18:48 | 只看该作者
支持支持   顶一个   学一学   谢谢了   楼主

使用特权

评论回复
地板
trumpxp| | 2013-7-21 09:32 | 只看该作者
顶一个   谢谢哦   楼主   资料共享的很不错   顶一个  不错

使用特权

评论回复
5
占领将军| | 2013-7-22 17:23 | 只看该作者
很好,学习STM32中……

使用特权

评论回复
6
tonych123| | 2013-7-27 19:50 | 只看该作者
STM32新入门,多多学习

使用特权

评论回复
7
outstanding| | 2013-7-27 21:37 | 只看该作者
  加油、、、、

使用特权

评论回复
8
zxy2266| | 2014-5-1 12:16 | 只看该作者

STM32新入门,学习学习

使用特权

评论回复
9
电子无聊大神| | 2014-5-1 16:33 | 只看该作者
又一个卖板子的写教程了...

使用特权

评论回复
10
xi_liang|  楼主 | 2014-5-7 21:51 | 只看该作者
电子无聊大神 发表于 2014-5-1 16:33
又一个卖板子的写教程了...

呵呵,已经写了一年了,这个已经是旧的教程了,新买板子的教程更详细

使用特权

评论回复
11
电子无聊大神| | 2014-5-8 08:36 | 只看该作者
xi_liang 发表于 2014-5-7 21:51
呵呵,已经写了一年了,这个已经是旧的教程了,新买板子的教程更详细

aha  居然没看到帖子日期,失误失误。

使用特权

评论回复
12
xi_liang|  楼主 | 2014-5-8 13:39 | 只看该作者
电子无聊大神 发表于 2014-5-8 08:36
aha  居然没看到帖子日期,失误失误。

:lol

使用特权

评论回复
13
hfb| | 2015-6-4 20:21 | 只看该作者

那以前买你的板子怎么得到新的资料啊,我qq121757305

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://baiweijishu.taobao.com/ 百为STM32开发板 兼容官方STM3210E-EVAL开发板 WM-G-MR-09 WIFI开发板

41

主题

285

帖子

10

粉丝