嵌入式STM32程序编写基本流程(LED流水灯)

LED流水灯程序初始化流程

[cpp] view plain copy

  1. //1.定义结构体变量
  2. GPIO_InitTypeDef GPIO_InitStructure;
  3. //2.开启GPIOC的外部时钟,不同的外设开启不同的时钟,IO口复用时两个时钟都要开启。stmf10x_rcc.h
  4. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
  5. //3.设置要控制的GPIO管脚
  6. GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
  7. //4.设置管脚模式,推挽输出
  8. GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
  9. //5.设置GPIOC的引脚速度为50MHz
  10. GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  11. //6.调用库函数初始化GPIOC,初始化IO口
  12. GPIO_Init(GPIOC,&GPIO_InitStructure);
  13. //7.关闭所有LED等灯,GPIO_ResetBits(,);GPIO_SetBits(,);置位和清0函数
  14. GPIO_SetBits(GPIOC,GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5);

寄存器方式

[cpp] view plain copy

  1. GPIO_TypeDef * GPIOx;
  2. GPI0x=GPIOA;
  3. //开启GPIOA外设时钟
  4. GPIOx->APB2ENR|=1<<2;
  5. //配置GPIOA.3 4 5为推挽输出50MHZ
  6. GPIOx->CRL|=0X03<<12|0X03<<16|0X03<<20;
  7. //GPIOA.3 4 5输出0xff。
  8. GPIOx->ODR=0XFF;

LED.H

[cpp] view plain copy

  1. #ifndef __LED_H
  2. #define __LED_H
  3. #include "stm32f10x.h"
  4. #define LED1(a) if(a) \
  5. GPIO_SetBits(GPIOC,GPIO_Pin_3);\
  6. else    \
  7. GPIO_ResetBits(GPIOC,GPIO_Pin_3);
  8. #define LED2(a) if(a) \
  9. GPIO_SetBits(GPIOC,GPIO_Pin_4);\
  10. else    \
  11. GPIO_ResetBits(GPIOC,GPIO_Pin_4);
  12. #define LED3(a) if(a) \
  13. GPIO_SetBits(GPIOC,GPIO_Pin_5);\
  14. else    \
  15. GPIO_ResetBits(GPIOC,GPIO_Pin_5);
  16. void GPIO_Config(void);
  17. #endif

"\"为行连接符,表示本行与上一行属于同一代码行.

端口设置可以使用“sys.h“下的PXout(n)=0/1;PXin(n);来进行设置

原文地址:https://www.cnblogs.com/huan-huan/p/8296299.html

时间: 2024-10-02 22:38:03

嵌入式STM32程序编写基本流程(LED流水灯)的相关文章

第一个FPGA工程—LED流水灯

这一章我们来实现第一个FPGA工程-LED流水灯.我们将通过流水灯例程向大家介绍一次完整的FPGA开发流程,从新建工程,代码设计,综合实现,管脚约束,下载FPGA程序.掌握本章内容,大家就算正式的开始入门FPGA开发了. 1.1.1.电路说明 1.1.2.新建工程 第一步:从开始菜单启动Quartus II 13.1(64 bit) ,如下图. 第二步:菜单栏选择File->New Project Wizard,新建工程. 第三步:弹出新建工程对话框,点击Next,下一步. 第三步:如下图,依次

LED流水灯(一)

7个寄存器 是R1-R16.(当然,里面有很多是分几个模式的,所以总共有37个)类似于单片机的R0-R7. GPXCON,GPXDAT等等是另外的寄存器,应该叫,特殊功能寄存器,类似于单片机的P0,P1,TCON,等等. GPXCON:是X管脚的控制寄存器,控制它们的模式,比如输出模式,输入模式……GPXDAT:是X管脚的数据寄存器,存储它们的数据, GPIO ,通用的输入输出,其引脚可供编程使用,对于简单的外部设备,比如控制一个LED 灯的亮灭,自然 只需要一位 信号就够了. 使用传统的 串行

Linux下控制GPIO实现LED流水灯(DM8168)

首先加载驱动模块,应用程序通过调用API实现GPIO控制功能. 驱动程序: 1 /* 2 * fileName: led_gpio.c 3 * just for LED GPIO test 4 * GP1_14 -> HDD 5 * GP1_15 -> REC 6 * GP1_27 -> NC 7 * GP1_28 -> IR 8 */ 9 10 #include <linux/device.h> 11 #include <linux/fs.h> 12 #i

利用简单的有限状态机(FSM)来实现一个简单的LED流水灯

有限状态机,(英语:Finite-state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型. 有限状态机是指输出取决于过去输入部分和当前输入部分的时序逻辑电路.一般来说,除了输入部分和输出部分外,有限状态机还含有一组具有"记忆"功能的寄存器,这些寄存器的功能是记忆有限状态机的内部状态,它们常被称为状态寄存器.在有限状态机中,状态寄存器的的下一个状态不仅与输入信号有关,而且还与该寄存器的当前状态有关,因此有限状

led流水灯 动态数码管 52单片机

#include "reg52.h" #include<intrins.h> void delay(int i) { while(i--); } void main() { char i; led=0xfe; delay(50000); while(1) { for(i=0;i<7;i++) { P2=_crol_(P2,1); delay(50000); } for(i=0;i<7;i++) { P2=_crled_(P2,1); delay(50000);

STM32f103之流水灯

       这几天打算复习下stm32有关的硬件资源,就想着从最开始做起,熟悉下当初所学的知识.学习stm32最初都基本是从流水灯开始的,今天就开始点亮流水灯.        首先,必须明白流水灯的硬件原理,以下是原理图: 它由8个管脚控制,因此首先必须进行初始化8个引脚. //初始化PE8...PE15为输出口.并使能这八个口的时钟 //LED IO初始化 void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2P

FPGA流水灯实验

源代码下载地址: http://pan.baidu.com/s/14H8D4 FPGA流水灯实验 花了几天通过流水灯实验把学习的verilogHDL的建模技巧总结了一下.写一份总结,给自己制定一套规范,方便以后查看和解决问题. 实现目标: 通过流水灯的实验实现了串行工作,流水线工作(时间并行),并行流水线工作(空间并行).串行工作是CPU的工作方式,也就是一个时间只能做一件事.通过verilogHDL完全可以模仿这种工作方式,也就是说通过CPU实现的算法和驱动程序完全可以转换成对应的verilo

编写优质嵌入式C程序(转)

前言:这是一年前我为公司内部写的一个文档,旨在向年轻的嵌入式软件工程师们介绍如何在裸机环境下编写优质嵌入式C程序.感觉是有一定的参考价值,所以拿出来分享,抛砖引玉. 转载请注明出处:http://blog.csdn.net/zhzht19861011/article/details/45508029 摘要:本文首先分析了C语言的陷阱和缺陷,对容易犯错的地方进行归纳整理:分析了编译器语义检查的不足之处并给出防范措施,以Keil MDK编译器为例,介绍了该编译器的特性.对未定义行为的处理以及一些高级

Tiny4412汇编流水灯代码,Tiny4412裸机LED操作[1]

从今天开始就正式进入到tiny4412的开发学习中了,今天主要看了一下Tiny4412的启动流程及存储器映射及Exynos4412数据手册,用汇编写了一个跑马灯程序(后续会有C语言版本的出来),先说一下我的开发环境吧: 开发板:Tiny4412 增强版 (底板是Tiny4412ADK 1312) 开发工具:UltraEdit 宿主机:VmWare Ubuntu12.04(64bit) 编译工具:arm-linux-gcc4.5.1 为了便于分类管理,特意开了一个Tiny4412学习专区,希望对大