STM32-跑马灯实验代码分析
时间:01-21 10:44 阅读:1366次
*温馨提示:点击图片可以放大观看高清大图
简介:本文给大家分享了一个STM32-跑马灯实验代码。
工程建立的主要步骤
1.新建3个文件夹:USER、SYSTEM、HARDWARE
2.新建led.c、led.h和test.c
3.在Target目录树上右击Manage Component,新建USER、SYSTEM、HARDWARE,并添加相关C文件(具体见前文MDK使用方法与技巧),跟前面一样HARDWARE组添加led.c文件。
4.在Options for Target ‘Target 1’对话框C/C++选项卡中Include Pathes里添加头文件路径。(这个不可少,否则编译出错,见前文MDK使用方法与技巧,led.h文件不可漏掉)
5.使用SWD方式下载,具体见MDK使用方法与技巧,注意reset and run选项,如果不选此项,程序下载后还要重启,然后才运行。
6.使用mcuisp通过串口下载程序搞了半天没下进去,原来是因为我把mcuisp左下角的电平设置错了,应该是DTR低电平复位,RTS高电平进BootLoader,真是粗心。
代码分析
led.c
[cpp] view plaincopy
#include <stm32f10x_lib.h>
#include "led.h"
//硬件电路两个LED灯对应PA8和PD2,初始化PA8和PD2为输出口,并使能这两个口的时钟
void LED_Init(void)
{
RCC->APB2ENR|=1<<2; //使能POARTA时钟
RCC->APB2ENR|=1<<5; //使能POARTD时钟
GPIOA->CRH&=0XFFFFFFF0;
GPIOA->CRH|=0X00000003; //PA8推挽输出
GPIOA->ODR=1<<8; //PA8输出高
GPIOD->CRH&=0XFFFFF0FF;
GPIOD->CRH|=0X00000300; //PD2推挽输出
GPIOD->ODR=1<<2; //PD2输出高
}
注意:1.RCC是MDK定义的一个结构体,里面包含RCC相关寄存器组
2.在配置STM32外设时,任何时候都要先使能该外设的时钟!APB2ENR是APB2总线上的外设时钟使能寄存器。
led.h
[cpp] view plaincopy
#ifndef __LED_H
#define __LED_H
#include "sys.h"
//LED端口定义
#define LED0 PAout(8)// PA8
#define LED1 PDout(2)// PD2
void LED_Init(void);//初始化
#endif
可以右击找到PAout(x)的定义,在sys.h中。
test.c
[cpp] view plaincopy
#include
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
int main(void)
{
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72); //延时初始化
LED_Init(); //初始化与LED连接的硬件接口
while(1)
{
LED0=0;
LED1=1;
delay_ms(300);
LED0=1;
LED1=0;
delay_ms(300);
}
}