您的位置 首页 电源

STM32-跑马灯试验代码剖析

工程建立的主要步骤1新建3个文件夹:USER、SYSTEM、HARDWARE2新建ledc、ledh和testc3在Target目录树上右击ManageComponent,新建US

工程树立的首要过程

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

  1. #include
  2. #include”led.h”
  3. //硬件电路两个LED灯对应PA8和PD2,初始化PA8和PD2为输出口,并使能这两个口的时钟
  4. voidLED_Init(void)
  5. {
  6. RCC->APB2ENR|=1<<2;//使能POARTA时钟
  7. RCC->APB2ENR|=1<<5;//使能POARTD时钟
  8. GPIOA->CRH&=0XFFFFFFF0;
  9. GPIOA->CRH|=0X00000003;//PA8推挽输出
  10. GPIOA->ODR=1<<8;//PA8输出高
  11. GPIOD->CRH&=0XFFFFF0FF;
  12. GPIOD->CRH|=0X00000300;//PD2推挽输出
  13. GPIOD->ODR=1<<2;//PD2输出高
  14. }

留意:1.RCC是MDK界说的一个结构体,里边包括RCC相关寄存器组

2.在装备STM32外设时,任何时候都要先使能该外设的时钟!APB2ENR是APB2总线上的外设时钟使能寄存器。

led.h

[cpp]view plaincopy

  1. #ifndef__LED_H
  2. #define__LED_H
  3. #include”sys.h”
  4. //LED端口界说
  5. #defineLED0PAout(8)//PA8
  6. #defineLED1PDout(2)//PD2
  7. voidLED_Init(void);//初始化
  8. #endif

能够右击找到PAout(x)的界说,在sys.h中。

test.c

[cpp]view plaincopy

  1. #include
  2. #include”sys.h”
  3. #include”usart.h”
  4. #include”delay.h”
  5. #include”led.h”
  6. intmain(void)
  7. {
  8. Stm32_Clock_Init(9);//体系时钟设置
  9. delay_init(72);//延时初始化
  10. LED_Init();//初始化与LED衔接的硬件接口
  11. while(1)
  12. {
  13. LED0=0;
  14. LED1=1;
  15. delay_ms(300);
  16. LED0=1;
  17. LED1=0;
  18. delay_ms(300);
  19. }
  20. }

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/261433.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部