zoukankan      html  css  js  c++  java
  • STM32F407 跑马灯 寄存器版 个人笔记

    更多原理请参考跑马灯 库函数版 个人笔记

    步骤

    1. 使能IO口时钟。配置相关寄存器寄存器RCC->AHB1ENR

    2. 初始化IO口模式。配置四个配置寄存器
      GPIOx_MODER/ GPIOx_OTYPER/ GPIOx_OSPEEDR/ GPIOx_PUPDR

    3. 操作IO口,输出高低电平。配置寄存器GPIOX_ODR或者BSRRL/BSRRH。

    代码

    led.c

    #include "led.h"
    #include "stm32f4xx.h"
    void LED_Init(){
    	//1.使能pf9 和pf 10 的时钟
    	//打开中文参考手册,找到时钟使能寄存器ah
    	/*
    	6.3.12 RCC AHB1 外设时钟使能寄存器 (RCC_AHB1ENR)
    	*/
    	//查手册知,PF是第五位,故第五位置1,其余位不变
    	RCC->AHB1ENR |= 1<<5;
    
    	
    	//2.GPIO_init
    	//GPIOF)_9
    	GPIOF->MODER &= ~(3<<2*9);   //查手册知,19,18位为01(通用输出模式)先都置为0    ;        gpiof9,每个引脚两位
    	GPIOF->MODER |= 1<<2*9;      //再把18位置为1
    	
    	GPIOF->OSPEEDR &= ~(3<<2*9);  //19~18   10  fast 50MHz
    	GPIOF->OSPEEDR |= 2<<2*9;
    	
    	GPIOF->PUPDR &= ~(3<<2*9);  //查手册知,19,18位为01
    	GPIOF->PUPDR|= 1<<2*9; 
    	
    	GPIOF->OTYPER &= ~(1<<9);    //第九十位为0
    	
    
    	//GPIOF)_10
    	GPIOF->MODER &= ~(3<<2*10);   //查手册知,19,18位为01(通用输出模式)先都置为0    ;        gpiof9,每个引脚两位
    	GPIOF->MODER |= 1<<2*10;      //再把18位置为1
    	
    	GPIOF->OSPEEDR &= ~(3<<2*10);  //19~18   10  fast 50MHz
    	GPIOF->OSPEEDR |= 2<<2*10;
    	
    	GPIOF->PUPDR &= ~(3<<2*10);  //查手册知,19,18位为01
    	GPIOF->PUPDR|= 1<<2*10; 
    	
    	GPIOF->OTYPER &= ~(1<<10);    //第九十位为0
    	
    	//3.输出高低电平
    	GPIOF->ODR |= 1<<9;
    	GPIOF->ODR |= 1<<10;
    }
    
    
    

    led.h

    #ifndef __LED_H
    #define __LED_H
    void LED_Init(void);
    #endif
    
    

    main.c

    #include "stm32f4xx.h"
    #include "led.h"
    #include "delay.h"
    int main()
    {
    	delay_init(168);
    	LED_Init();
    	while(1){
    		Stm32_Clock_Init(336,8,2,7);//设置时钟,168Mhz,(先开始没加这一句,延时速度很慢)
    		GPIOF->ODR &=~(1<<9);
    		GPIOF->ODR |=1<<10;
    		delay_ms(500);
    	
    		
    		GPIOF->ODR |=1<<9;
    		GPIOF->ODR &=~(1<<10);
    		delay_ms(500);
    	}
    }
    
    
    
    
  • 相关阅读:
    树的子结构(剑指offer_26)
    合并两个排序的链表(剑指offer_25)
    反转链表(剑指offer_24)多看多思多想
    链表中环的入口结点(剑指offer_23)
    链表中倒数第k个节点
    调整数组顺序使奇数位于偶数前面(剑指offer_21)
    表示数值的字符串(剑指offer_20)
    1676. 跳石头
    1670. 回合制游戏
    1667. 区间统计(回顾)
  • 原文地址:https://www.cnblogs.com/YuQiao0303/p/10006174.html
Copyright © 2011-2022 走看看