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. 基于Linux系统ipython和集成开发环境Pycharm的安装

    1.简介 Python是一门跨平台的开源.免费的.解释型.面向对象.带有动态语义的脚本语言,同时也支持伪编译以进行优化和提高运行速度,还支持使用py2exe工具将Python程序转换为exe可执行程序 ...

  2. MySQL版本浅介

    一.关于MySQL发行版介绍: 1. MySQL官方发行版 MySQL是最流行的数据库,主要特点: 简单:MySQL使用很简单,可以无师自通地参照文档安装运行和使用MySQL,几乎没有什么门槛. 开源 ...

  3. springcloud3(五) spring cloud gateway动态路由的四类实现方式

    写这篇博客主要是为了汇总下动态路由的多种实现方式,没有好坏之分,任何的方案都是依赖业务场景需求的,现在网上实现方式主要有: 基于Nacos, 基于数据库(PosgreSQL/Redis), 基于Mem ...

  4. 如何实现自定义sk_buff数据包并提交协议栈

    目录 一.自定义数据包的封装流程 1. 分配skb 2.初始定位(skb_reserve) 3.拷贝数据(skb_push / skb_pull / skb_put / ) 4.设置传输层头部 5.设 ...

  5. Python使用openpyxl模块操作Excel表格

    ''' Excel文件三个对象 workbook: 工作簿,一个excel文件包含多个sheet. sheet:工作表,一个workbook有多个,表名识别,如"sheet1",& ...

  6. Identity用户管理入门六(判断是否登录)

    目前用户管理的增删改查及登录功能已经全部实现,但存在一个问题,登录后要取消登录按钮显示退出按钮,未登录应该有注册按钮,现实现过程如下 一.Startup.cs中增加服务 app.UseAuthenti ...

  7. 解析Prometheus PromQL

    解析PromQL 目前对Prometheus 的promQL 的解析文章比较少,且Prometheus官方也没有提供一个公共的库来对齐进行解析.下面实现对promQL的解析,并实现注入label功能. ...

  8. go中语句为什么不用加分号;结束

    不用人加 编译的时候自动加了分号; 编译器工作原理 首先,在一行中,寻找成对的符号,比如一对字符串的引号.一对圆括号,一对大括号 上述任务完成后,在一行中没有其他成对的标示,然后就在行尾追加分号; 所 ...

  9. docker 搭建 zipkin

    1.拉镜像 docker pull openzipkin/zipkin 2.运行镜像 docker run -d --restart always -p 9411:9411 --name zipkin ...

  10. Consul+Ocelot+Polly在.NetCore中使用(.NET5)-Consul服务注册,服务发现

    环境 .NET5,Consul_v1.10.2 一.简介 在微服务中利用Consul可以实现服务的注册,服务发现,治理,健康检查等. Web调站点需要调用多个服务,如果没有Consul,可能就是Web ...