跑马灯-------寄存器版本

发布者:SereneNature最新更新时间:2020-09-07 来源: eefocus关键字:跑马灯  寄存器版本 手机看文章 扫描二维码
随时随地手机看文章

--------------拿到一个工程模板,首先要编译,编译成功之后再删除main()内容,这样编译不会出错。-----------------
**

程序步骤

**
在这里插入图片描述
配置时钟使能寄存器
在这里插入图片描述
RCC AHB1ENR寄存器 用来时钟使能,然后 跑马灯IO口是PF9,PF10 ,GPIOF在RCC AHB1ENR 中是第五位, 给它写入1,其他位保持不变,所以要进行 “或运算”
RCC->AHB1ENR|= 1<<5;//把这个寄存器的第五位设置为1

配置PF9
MODER寄存器
在这里插入图片描述
F0是 0,1位 F1是2,3位,,,所以 F9 是18,19位, 给该位写入 01输出模式
a,首先要把这两位清零,在与01进行“或运算” (ps 不清零要写入01有些麻烦)
b,清零:比如把 11 10 10 11 -------->11 10 01 11,,,要把第二位(最右边为最低位) 10 清零 需要
11 10 10 11 & 11 11 00 11 (这里有个技巧,可以这样想 将与上的这个数变为
00 00 11 00 再取反)11 10 10 11 & (~(00 00 11 00))
而00 00 11 00 可以写成( 3<<2)因为11是3, 原来是这个数00 00 00 11,将11左移两位,就变成了 00 00 11 00.
c, 清零后 就变成了 11 10 00 11,再进行或运算给第二位 写入 01 ,把1<<2.


OSPEEDR寄存器
在这里插入图片描述
PUPDR
在这里插入图片描述
在这里插入图片描述
OTYPER寄存器
每一位配置一个IO,0 推挽 0<<9(推挽 可以输出 01电平,开漏只能输出0电平)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ODR寄存器给高电平 写入1(或运算),给低电平写入0(与运算)
GPIOF->ODR|= 1<<9;//1 高电平
GPIOF->ODR&=~(1<<9);//0 低电平


//PF9

GPIOF->MODER &= ~(3<<2*9);//设置第九个IO口,每一个IO操作两个位,3是11,清零

GPIOF->MODER |= 1<<(2*9);//1是01  ,写入01 输出模式

GPIOF->OSPEEDR &= ~(3<<2*9);

GPIOF->OSPEEDR |= 2<<(2*9);  //写入 10  配置50MHz

GPIOF->PUPDR &= ~(3<<2*9);

GPIOF->PUPDR |=1<<(2*9);//上拉

GPIOF->OTYPER &= ~(1<<9);

GPIOF->OTYPER |=0<<9;//推挽

     GPIOF->ODR|= 1<<9;//1   高电平


//PF10-

GPIOF->MODER &= ~(3<<2*10);

GPIOF->MODER |= 1<<(2*10);

GPIOF->OSPEEDR &= ~(3<<2*10);

GPIOF->OSPEEDR |= 2<<(2*10);

GPIOF->PUPDR &= ~(3<<2*10);

GPIOF->PUPDR |=1<<(2*10);

GPIOF->OTYPER &= ~(1<<10);

GPIOF->OTYPER |=0<<10;

GPIOF->ODR|= 1<<10;


#include "stm32f4xx.h"


#include "led.h"


#include "delay.h"



int main(void)

{


delay_init(168);

LED_Init();

while(1){

GPIOF->ODR&=~(1<<9);

GPIOF->ODR&=~(1<<10);

delay_ms(500);

GPIOF->ODR |= 1<<9;

GPIOF->ODR |=1<<10;

delay_ms(500);

}


}


关键字:跑马灯  寄存器版本 引用地址:跑马灯-------寄存器版本

上一篇:常用的推挽输出、开漏输出、上拉输入
下一篇:第一个跑马灯实验

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved