1. 项目:使用stm32寄存器点亮LED, 分别点亮红、绿、蓝3个灯。

2. 代码:

  只需要编写main.c程序,stm3210x.h程序为空(只需要新建即可)。

  2.1 点亮绿灯main.c程序

#include "stm32f10x.h"

int main(void)
{
//打开GPIOB端口的时钟
*(unsigned int * )0x40021018 |= ((1)<<3); //置位1 //配置IO口为输出,设置PB0输出低电平,点亮绿灯
*(unsigned int * )0x40010c00 |= ((1)<<(4*0)); //置位1
//控制ODR寄存器
*(unsigned int *)0x40010c0c &= ~(1<<0); //清0 } void SystemInit(void)
{
//函数体为空给,为了骗过编译器不报错
}

  

  2.2 点亮红灯main.c程序

  这里只需要修改port口PB5输出低电平即可

#include "stm32f10x.h"

int main(void)
{
//打开GPIOB端口的时钟
*(unsigned int * )0x40021018 |= ((1)<<3); //置位1
//配置IO口为输出,设置PB5输出低电平,点亮红灯
*(unsigned int*)0x40010c00 |= ((1)<<(4*5)); //置位1
//控制ODR寄存器
*(unsigned int *)0x40010c0c &= ~(1<<0); //清0
} void SystemInit(void)
{
//函数体为空给,为了骗过编译器不报错
}

  2.3 点亮蓝灯main.c程序

#include "stm32f10x.h"

int main(void)
{
//打开GPIOB端口的时钟
*(unsigned int * )0x40021018 |= ((1)<<3); //置位1
//配置IO口为输出,设置PB1输出低电平,点亮蓝灯
*(unsigned int*)0x40010c00 |= ((1)<<(4*1)); //置位1
//控制ODR寄存器
*(unsigned int *)0x40010c0c &= ~(1<<0); //清0
} void SystemInit(void)
{
//函数体为空给,为了骗过编译器不报错
}

3. 思路总结

  stm32点亮LED需要3步:

    (1)打开GPIO端口时钟

    (2)配置GPIO工作模式/速度,输入/输出

    (3)控制GPIO输出高低电平

    

   

    

  

使用寄存器点亮LED的更多相关文章

  1. 第7章 使用寄存器点亮LED灯

    第7章     使用寄存器点亮LED灯 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...

  2. 第7章 使用寄存器点亮LED灯—零死角玩转STM32-F429系列

    第7章     使用寄存器点亮LED灯 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...

  3. STM32F4 阿波罗寄存器点亮LED灯

    学习步骤: 使用寄存器点亮LED灯,需要进行如下的步骤,LED灯属于外设部分,首先需要开启外设的时钟使能,然后LED灯是PB1口,(芯片是正点原子的阿波罗),接着定义GPIOB口的输出模式,为上拉.推 ...

  4. 使用寄存器点亮LED——2

    1. 项目:使用stm32寄存器点亮LED, 分别点亮红.绿.蓝3个灯. 2. 步骤 先新建个文件夹保存项目 再新建项目 将startup_stm32f10x_hd.s拷贝到该文件夹下 新建main. ...

  5. 使用寄存器点亮LED——编程实战

    stm32的编程和stc89c51还是存在着很多思想上的不同的,在51单片机中,我们点亮LED灯,只用给对应IO高低电平就可以了,而stm32中,就一个简单的GPIO,我们也需要配置好几个寄存器,而且 ...

  6. 使用寄存器点亮LED——前言基础知识

    在点亮LED之前,我们需要具备一些基础知识: GPIO—general purpose intput output 是通用输入输出端口的简称,简单来说就是软件可控制的引脚,STM32芯片的GPIO引脚 ...

  7. 使用寄存器点亮LED(第2节)—寄存器映射代码讲解

    // 打开 GPIOB 端口的时钟 *( unsigned int * )0x40021018|= ( 1 << 4 ); // 配置PC2 IO口为通用推挽输出,速度为10M *( un ...

  8. stm32F103C8T6通过写寄存器点亮LED灯

    因为我写寄存器的操作不太熟练,所以最近腾出时间学习了一下怎么写寄存器,现在把我的经验贴出来,如有不足请指正 我使用的板子是stm32F103C8T6(也就是最常用的板子),现在要通过写GPIO的寄存器 ...

  9. 使用寄存器点亮LED(第1节)—GPIO功能框图讲解

    GPIO简介 GPIO 是通用输入输出端口的简称,简单来说就是 STM32 可控制的引脚, STM32 芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯.控制以及数据采集的功能.STM32 ...

随机推荐

  1. Springboot_Email注解爆红

    应该是更新后的版本,不会自动导入pom依赖 <!--新版本需要validation启动器 --> <dependency> <groupId>org.springf ...

  2. golang map实现原理

    这篇文章主要讲 map 的赋值.删除.查询.扩容的具体执行过程,仍然是从底层的角度展开.结合源码,看完本文一定会彻底明白 map 底层原理. 我要说明的是,这里对 map 的基本用法涉及比较少,我相信 ...

  3. 2021-06-14 BZOJ4919:大根堆

    BZOJ4919:大根堆 Description: 题目描述   给定一棵n个节点的有根树,编号依次为1到n,其中1号点为根节点.每个点有一个权值v_i. 你需要将这棵树转化成一个大根堆.确切地说,你 ...

  4. Python - 面向对象编程 - 三大特性之封装

    简单介绍封装 封装是面向对象编程的一大特点 封装可以被认为是一个保护屏障,防止该类的属性.方法和数据结构被外部随意访问 要访问该类的属性.私有方法.数据结构,必须由指定的方法控制访问 深入理解封装 在 ...

  5. 专项测试-App性能分析

    专项测试 app性能 Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastRece ...

  6. python库--pymysql

    方法/类 返回值 参数 说明         .connect() ct 建立与mysql数据库的连接 host 数据库服务器所在的主机 user 用户名 password 密码 database 要 ...

  7. DataGridView高度自动调整

    AutoResizeGrid.cs代码 /// <summary> /// 根据行数据,自动调整DataGridView高度 /// </summary> public sea ...

  8. docker部署rabbitmq集群

    docker版本:18.09.6 或以上 rabbitmq镜像版本:rabbitmq:3.9.5-management 一.拉镜像: docker pull rabbitmq:3.9.5-manage ...

  9. 手机UI自动化之显示点触位置(触摸轨迹)

    上期回顾:Airtest源码分析--Android屏幕截图方式 不管是用Appium还是Airtest,或是其他手机UI自动化工具,你是不是经常遇到这种情况,代码明明执行了click或swipe,怎么 ...

  10. mybatis一对一联表查询的两种常见方式

    1.一条语句执行查询(代码如下图)  注释:class表(c别名),teacher表(t别名)teacher_id为class表的字段t_id为teacher表的字段,因为两者有主键关联的原因,c_i ...