STM32-跑马灯实验代码分析
时间:11-23
来源:互联网
点击:
工程建立的主要步骤
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
- #include"led.h"
- //硬件电路两个LED灯对应PA8和PD2,初始化PA8和PD2为输出口,并使能这两个口的时钟
- voidLED_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端口定义
- #defineLED0PAout(8)//PA8
- #defineLED1PDout(2)//PD2
- voidLED_Init(void);//初始化
- #endif
test.c
[cpp]view plaincopy
- #include
- #include"sys.h"
- #include"usart.h"
- #include"delay.h"
- #include"led.h"
- intmain(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);
- }
- }
STM32跑马灯实验代码分 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)