STM32单片机入门 寄存器版 跑马灯不亮
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32单片机入门 寄存器版 跑马灯不亮相关的知识,希望对你有一定的参考价值。
#include <stm32f10x.h>
#include "sys.h"
#include "delay.h"
#include "usart.h"
int main(void)
Stm32_Clock_Init(9);
delay_init(72);
RCC->APB2ENR|=1<<3;
RCC->APB2ENR|=1<<6;
GPIOB->CRL&=0XFF0FFFFF;
GPIOB->CRL|=0X00300000;
GPIOB->ODR|=1<<5;
GPIOE->CRL&=0XFF0FFFFF;
GPIOE->CRL|=0X00300000;
GPIOE->ODR|=1<<5;
GPIOB->ODR &= ~(1<<5);
while(1)
GPIOE->ODR|=1<<5;
GPIOB->ODR|=1<<5;
delay_ms(300);
GPIOB->ODR &= ~(1<<5);
GPIOE->ODR &= ~(1<<5);
delay_ms(300);
以上是程序代码,编译能通过不报错,但是下载到板子上没有led灯闪烁!
//GPIOB->ODR &= ~(1<<5);
//GPIOE->ODR &= ~(1<<5);
//delay_ms(300);
看看led能否被点亮,如果不能,就是你的初始化配置有问题,可找原子的不完全手册。
如果能点亮,delay_ms(300);延时不够,加大一点,比如3000,30000追问
不对,我的是mini开发板。
参考技术A 将I/O口设为推挽输出追问我的开发板是miniSTM32
参考技术B 配置可能不对追问我的是miniSTM32,应该怎么配??
追答控制LED 的端口 要配制成 推挽输出
stm32寄存器版——跑马灯
一。首先头文件LED定义
1 # ifndef __Led_H 2 #define __Led_H 3 #include "sys.h" 4 #define LED0 PBout(5) // 5 #define LED1 PEout(5) 6 void LED_Init(void); 7 #endif
二 LED.c
3.GPIO_CRL端口配置低寄存器
GPIO_CRH端口配置高寄存器
GPIO_IDR端口输入寄存器
GPIO_ODR端口输出寄存器
GPIO_BSRR端口位设置/清除寄存器
GPIO-BRR端口位清除寄存器
GPIO_LCKR端口配置锁存寄存器
每一组CNFy[1:0]和MODEx[1:0]为一组;
#include LED.h void LED_Init() { RCC->APB2ENR|=1<<3; //使能PORTB RCC->APB2ENR|=1<<6; //使能PORTE GPIOB->CRL&=0XFF0FFFFF; //清0 GPIOB->CRL|=0X00300000; //PB.5推挽输出 3->0011 GPIOB->ODR|=1<<5; //.PBS输出高 GPIOE->CRL&=0XFF0FFFFF; //清0 GPIOE->CRL|=0X00300000; //PE.5推挽输出 GPIOE->ODR|=1<<5; //.PES输出高 }
清0操作:&=把要赋值的那位写0,其他写1;
三.main 函数
#include "delay.h" #include "sys.h" #include "led.h" main() { Stm32_Clock_Init(9); //系统时钟设置 delay_init (72); //延时初始化 LED_Init(); //LED连接的硬件接口 while(1) { LED1=1;LED0=0; delay_ms(300); LED1=0;LED0=1; delay_ms(300); } }
以上是关于STM32单片机入门 寄存器版 跑马灯不亮的主要内容,如果未能解决你的问题,请参考以下文章