使用寄存器点亮LED
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的更多相关文章
- 第7章 使用寄存器点亮LED灯
第7章 使用寄存器点亮LED灯 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...
- 第7章 使用寄存器点亮LED灯—零死角玩转STM32-F429系列
第7章 使用寄存器点亮LED灯 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...
- STM32F4 阿波罗寄存器点亮LED灯
学习步骤: 使用寄存器点亮LED灯,需要进行如下的步骤,LED灯属于外设部分,首先需要开启外设的时钟使能,然后LED灯是PB1口,(芯片是正点原子的阿波罗),接着定义GPIOB口的输出模式,为上拉.推 ...
- 使用寄存器点亮LED——2
1. 项目:使用stm32寄存器点亮LED, 分别点亮红.绿.蓝3个灯. 2. 步骤 先新建个文件夹保存项目 再新建项目 将startup_stm32f10x_hd.s拷贝到该文件夹下 新建main. ...
- 使用寄存器点亮LED——编程实战
stm32的编程和stc89c51还是存在着很多思想上的不同的,在51单片机中,我们点亮LED灯,只用给对应IO高低电平就可以了,而stm32中,就一个简单的GPIO,我们也需要配置好几个寄存器,而且 ...
- 使用寄存器点亮LED——前言基础知识
在点亮LED之前,我们需要具备一些基础知识: GPIO—general purpose intput output 是通用输入输出端口的简称,简单来说就是软件可控制的引脚,STM32芯片的GPIO引脚 ...
- 使用寄存器点亮LED(第2节)—寄存器映射代码讲解
// 打开 GPIOB 端口的时钟 *( unsigned int * )0x40021018|= ( 1 << 4 ); // 配置PC2 IO口为通用推挽输出,速度为10M *( un ...
- stm32F103C8T6通过写寄存器点亮LED灯
因为我写寄存器的操作不太熟练,所以最近腾出时间学习了一下怎么写寄存器,现在把我的经验贴出来,如有不足请指正 我使用的板子是stm32F103C8T6(也就是最常用的板子),现在要通过写GPIO的寄存器 ...
- 使用寄存器点亮LED(第1节)—GPIO功能框图讲解
GPIO简介 GPIO 是通用输入输出端口的简称,简单来说就是 STM32 可控制的引脚, STM32 芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯.控制以及数据采集的功能.STM32 ...
随机推荐
- 基于Linux系统ipython和集成开发环境Pycharm的安装
1.简介 Python是一门跨平台的开源.免费的.解释型.面向对象.带有动态语义的脚本语言,同时也支持伪编译以进行优化和提高运行速度,还支持使用py2exe工具将Python程序转换为exe可执行程序 ...
- MySQL版本浅介
一.关于MySQL发行版介绍: 1. MySQL官方发行版 MySQL是最流行的数据库,主要特点: 简单:MySQL使用很简单,可以无师自通地参照文档安装运行和使用MySQL,几乎没有什么门槛. 开源 ...
- springcloud3(五) spring cloud gateway动态路由的四类实现方式
写这篇博客主要是为了汇总下动态路由的多种实现方式,没有好坏之分,任何的方案都是依赖业务场景需求的,现在网上实现方式主要有: 基于Nacos, 基于数据库(PosgreSQL/Redis), 基于Mem ...
- 如何实现自定义sk_buff数据包并提交协议栈
目录 一.自定义数据包的封装流程 1. 分配skb 2.初始定位(skb_reserve) 3.拷贝数据(skb_push / skb_pull / skb_put / ) 4.设置传输层头部 5.设 ...
- Python使用openpyxl模块操作Excel表格
''' Excel文件三个对象 workbook: 工作簿,一个excel文件包含多个sheet. sheet:工作表,一个workbook有多个,表名识别,如"sheet1",& ...
- Identity用户管理入门六(判断是否登录)
目前用户管理的增删改查及登录功能已经全部实现,但存在一个问题,登录后要取消登录按钮显示退出按钮,未登录应该有注册按钮,现实现过程如下 一.Startup.cs中增加服务 app.UseAuthenti ...
- 解析Prometheus PromQL
解析PromQL 目前对Prometheus 的promQL 的解析文章比较少,且Prometheus官方也没有提供一个公共的库来对齐进行解析.下面实现对promQL的解析,并实现注入label功能. ...
- go中语句为什么不用加分号;结束
不用人加 编译的时候自动加了分号; 编译器工作原理 首先,在一行中,寻找成对的符号,比如一对字符串的引号.一对圆括号,一对大括号 上述任务完成后,在一行中没有其他成对的标示,然后就在行尾追加分号; 所 ...
- docker 搭建 zipkin
1.拉镜像 docker pull openzipkin/zipkin 2.运行镜像 docker run -d --restart always -p 9411:9411 --name zipkin ...
- Consul+Ocelot+Polly在.NetCore中使用(.NET5)-Consul服务注册,服务发现
环境 .NET5,Consul_v1.10.2 一.简介 在微服务中利用Consul可以实现服务的注册,服务发现,治理,健康检查等. Web调站点需要调用多个服务,如果没有Consul,可能就是Web ...