STM32F407 跑马灯实验
2014-02-25 16:19
260 查看
STM32F407跑马灯实验
STM32F4系列的GPIO寄存器和F1系列稍有不同,在这里介绍一下各个寄存器和专业名词。
PP:推挽输出PP+PU:带上拉的推挽输出PP+PD:带下拉的推挽输出
OD:开漏输出OD+PU:带上拉的开漏输出OD+PD:带下拉的开漏输出
Floating:浮空输入Analog:模拟输入
MODER寄存器:设置GPIO模式寄存器,00输入模式,01输出模式,10复用模式,11模拟输入模式。
OTYPER寄存器:设置GPIO类型寄存器,仅在做输出时使用,0是推挽输出,1是开漏输出。
OSPEEDR寄存器:设置GPIO速度寄存器,有四种速度。
PUPDR寄存器:设置上拉下拉寄存器
设置步骤:LED_init();//中断时间=168M/1000/168M=0.001S=1ms [/code]
1.使能GPIO时钟
2.设置相应的IO口为输入或输出(MODER寄存器)
3.设置输入\输出的类型(OTYPER寄存器)
4.设置输出的速度(OSPEEDR寄存器)
5.如果输出速度>=50M,开启补偿单元
6.设置上拉下拉寄存器(PUPDR寄存器)
7.通过复位置位寄存器和输入输出数据寄存器进行操作。
[code]/*-----------------------------------------------------------------------------------------------------------------------------
实验一:跑马灯
作者:冰点
日期:2014.2.20
软件平台:MDK5.05
------------------------------------------------------------------------------------------------------------------------------*/
#include<stm32f4xx.h>
uint32_tDelaytime;
voidDelay(inttime)
{
Delaytime=time;
while(Delaytime!=0x00);
}
voidLED_init(void)
{
RCC->AHB1ENR|=(1<<2);//开GPIOC时钟
GPIOC->MODER&=0xfffffcfc;
GPIOC->MODER|=0x00000101;//MODER寄存器设置IO作为输入还是输出
GPIOC->OTYPER&=~((1<<0)|(1<<4));
GPIOC->OSPEEDR&=0xfffffcfc;
GPIOC->OSPEEDR|=0x00000303;//速度最快
GPIOC->PUPDR&=0xfffffcfc;//无上拉下拉
SYSCFG->CMPCR=0x00000001;//使用IO补偿单元F2F4新增功能,速度超过50MHZ时使用
}
voidSysTick_Handler(void)
{
if(Delaytime!=0x00)
Delaytime--;
}
intmain(void)
{
SystemInit();
SysTick_Config(SystemCoreClock/1000);//每1ms中断1次SystemCoreClock=168MHZ也就是1S168M次
while(1)
{
GPIOC->ODR^=((1<<0)|(1<<4));
Delay(1000);
}
}
相关文章推荐
- [UI界面]-UIWindow
- 初涉JavaScript原生Ajax
- eclipse生成hadoop程序示例
- Sql Server 使用 SET NOCOUNT { ON | OFF}
- QTP(quicktest Professional)
- Android消息循环
- 黑马程序员—泛型延伸
- redo log 故障案例
- git操作github
- SVN 系列 - 实战、经验
- HTML & CSS 常用的命名
- linux和windows下mysql密码怎样清空!
- R语言数据预处理
- win7访问共享文件账号问题处理
- sql 语句
- IOS中摇一摇实现截屏(可实现问题反馈的功能)
- windows server 2008 下安装openmeetings 2.2.0
- 8.5.4: Spring的事务---使用@Transactional
- ♫【异步】短小强悍的JavaScript异步调用库
- 趁年华未老