苏嵌暑期实训----day16

姓名:祝俊宝                                        日期:2018.07.24

今日学习任务通过GPIO的相关寄存器实现流水灯
今日任务完成情况完成了点亮一个灯,四个灯,流水灯的编程
今日开发中遇到的问题汇总

1、工程设置的有关参数不知道如何设置,如在设置时要勾选“USE microLIB”,才能使小灯亮

2、对于寄存器的功能以及如何配置的理解不深,导致功能实现过程中稍有困难

今日未解决的问题配置固件库
今日开发收获

1、关于microLib

microlib 是缺省 C 库的备选库。 它用于必须在极少量内存环境下运行的深层嵌入式应用程序。 这些应用程序不在操作系统中运行。microlib 不会尝试成为符合标准的 ISO C 库。 
microlib 进行了高度优化以使代码变得很小。 它的功能比缺省 C 库少,并且根本不具备某些 ISO C 特性。某些库函数的运行速度也比较慢,例如,memcpy()。

2、通过查阅资料对GPIO的相关寄存器有了进一步的了解

自我评价通过自主学习顺利完成了今日任务
流水灯代码:

#include "stm32f4xx.h"

 

void delay(unsigned int time)
{
  unsigned int n=8*time;
  while(n--);
}

 

unsigned int i = 2;

int main(void)
{
    //1、开启时钟
    RCC_AHB1ENR |= (1 << 2);
    
        //2、设置对应的io口的模式
        GPIOC_MODER &= ~(3 << 2);   //清零
        GPIOC_MODER &= ~(3 << 4);
        GPIOC_MODER &= ~(3 << 6);
        GPIOC_MODER &= ~(3 << 8);
    
        GPIOC_MODER |= (1 << 2);    //置1,输出
        GPIOC_MODER |= (1 << 4);
        GPIOC_MODER |= (1 << 6);
        GPIOC_MODER |= (1 << 8);
        
        //3、输出模式选择
        GPIOC_OTYPER &= ~(1 << 1);  //推挽
        GPIOC_OTYPER &= ~(1 << 2);
        GPIOC_OTYPER &= ~(1 << 3);
        GPIOC_OTYPER &= ~(1 << 4);
        
        //4、输出速度选择,50MHz
        GPIOC_OSPEEDR &= ~(3 << 2);  //清零
        GPIOC_OSPEEDR &= ~(3 << 4);
        GPIOC_OSPEEDR &= ~(3 << 6);
        GPIOC_OSPEEDR &= ~(3 << 8);
        
        GPIOC_OSPEEDR |=(2 << 2);    //选择50MHz
        GPIOC_OSPEEDR |=(2 << 4);
        GPIOC_OSPEEDR |=(2 << 6);
        GPIOC_OSPEEDR |=(2 << 8);
                
        
        
        while(1)
        {    
            
            //5、输出数据寄存器,控制管脚的电平高低,从而控制灯的亮灭
            GPIOC_ODR |= (1 << 1);       //蓝灯置高电平,亮
            delay(100000);
            
            GPIOC_ODR &= ~(1 << 1);            //熄灭蓝灯
            GPIOC_ODR |= (1 << 2);            //点亮黄灯
            delay(100000);
            
            GPIOC_ODR &= ~(1 << 2);
            GPIOC_ODR |= (1 << 3);
            delay(100000);
            
            GPIOC_ODR &= ~(1 << 3);
            GPIOC_ODR |= (1 << 4);
            delay(100000);
            
            GPIOC_ODR &= ~(1 << 4);            //熄灭绿灯
            GPIOC_ODR |= (1 << 1);            //点亮蓝灯
            delay(100000);
        }

}

void SystemInit(void)
{

}
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值