找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11061|回复: 1
打印 上一主题 下一主题
收起左侧

STM32F103ZET6之点亮发光二极管、按键检测、蜂鸣器发声实验

[复制链接]
跳转到指定楼层
楼主
ID:59583 发表于 2014-3-26 15:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我感觉在初学stm32的时候,就把stm32当做51学习吧,等到学到一定程度的时候,就会接触到很多新的东西,例如文件系统、gui、rtos、字库等等,边学习着边做点DIY就会收获的更多,本人以前学习51、pic等等,做过很多diy,由于快要毕业了,打算学习一年的stm32,为以后的工作做点铺垫。闲话不多说了,上例程......
1.点亮流水灯
       其实就是把io口配置好了就可以点亮发光二极管了
       #define LED0 PBout(5)//PBout(5)代表PB.5是输出状态
       #define LED1 PEout(5)
       //led初始化函数
       //无参数
       //无返回值
       void LED_INIT(void)
       {
           //led0 PB5
           //led1 PE5
           RCC->APB2ENR|=1<<3;    //打开PB口时钟
           GPIOB->CRL&=0XFF0FFFFF;//清除PB5的原有状态
           GPIOB->CRL|=0X00300000;//设置PB5为通用推挽式输出,50MHZ
           GPIOB->ODR|=1<<5;      //设置PB5输出高电平,灯不亮,因为是共阳极
           RCC->APB2ENR|=1<<6;    //打开PE口时钟
           GPIOE->CRL&=0XFF0FFFFF;//清除PE5的原有状态
           GPIOE->CRL|=0X00300000;//设置PE5为通用推挽式输出,50MHZ
           GPIOE->ODR|=1<<5;      //设置PE5输出高电平,灯不亮,因为是共阳极
        }
        以上是初始化函数,步骤依次是1)初始化外设时钟,用到那个外设就初始化哪个外设时钟
                                    2)配置io口输入输出状态
                                    3)配置io口输出的高低电平
2.按键检测
      按键检测唯一和流水灯不同的是得把io口设置为输入状态(上拉或者下拉模式),只有在初始化的时候不同而已。
         //按键初始化函数
         //无参数
         //无返回值
         void KEY_INIT(void)
        {
              RCC->APB2ENR|=1<<6;    //打开PE口时钟
              GPIOE->CRL&=0XFFF000FF;//清除PE2 3 4的原有状态
              GPIOE->CRL|=0X00088800;//设置PE2 3 4为输入
              GPIOE->ODR|=7<<2;      //设置PE2 3 4输出高电平,上拉
              RCC->APB2ENR|=1<<2;    //打开PA口时钟
              GPIOA->CRL&=0XFFFFFFF0;//清除PA0的原有状态
              GPIOA->CRL|=0X00000008;//设置PA0为输入
        }
        以上是初始化函数,步骤依次是1)初始化外设时钟,用到那个外设就初始化哪个外设时钟
                                    2)配置io口输入输出状态
                                    3)配置io口输出的高低电平
3.蜂鸣器
      蜂鸣器分为有源和无源两种,我们一般使用的有源,有源的意思是通电即响,无源蜂鸣器得给蜂鸣器一定的脉冲信号,如果使用有源蜂鸣器,那么它的用法和点亮流水灯一样了。只需控制io口的高低电平即可。
            #define BEEP PBout(8)
            //蜂鸣器初始化函数
            //无参数
            //无返回值
            void BEEP_INIT(void)
           {
               RCC->APB2ENR|=1<<3;    //打开PB口时钟
               GPIOB->CRH&=0XFFFFFFF0;//清除PB8的原有状态
               GPIOB->CRH|=0X00000003;//设置PB8为输入,50MHZ
               GPIOB->ODR&=~(1<<8);   //设置PB8输出低电平
           }
        以上是初始化函数,步骤依次是1)初始化外设时钟,用到那个外设就初始化哪个外设时钟
                                    2)配置io口输入输出状态
                                    3)配置io口输出的高低电平
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:58348 发表于 2014-7-1 05:02 | 只看该作者
学习了,谢谢分享。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表