STM32_寄存器版本代码第一篇LED灯
使用STM32f103C8T6点亮LED小灯
这是第一次写博客,把自己所学分享给大家,欢迎大家评论给出建议,谢谢。
所需设备:STM32f103C8T6最小系统板和Jlink下载器
项目流程
电路连接——电路图
电路图所示当PC13管脚拉低时电路导通LED灯亮,反之则熄灭。
程序编写
LED文件
如图两个文件
led.h头文件描述+代码
#ifndef __LED_H
#define __LED_H
#include "sys.h"
#define LED13 PCout(13)
// PCout(13)函数作用设置PC13端口为输出:PCout(13)=1,PC13端口为输出高电平
void LED_Init(void); //LED灯寄存器初始化函数声明
#endif
led.c文件描述+代码
#include "sys.h"
#include "led.h"
void LED_Init(void)
{RCC->APB2ENR|=1<<4; //使能PORTC时钟 GPIOC->CRH&=0XFF0FFFFF; //清空寄存器四位控制一个端口GPIOC->CRH|=0x00100000; //P13 推挽输出 GPIOC->ODR|=1<<13; //P13 输出高
}
main.c程序描述+代码
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
int main(void)
{ /********系统初始化函数*****************/ Stm32_Clock_Init(9); //系统时钟设置delay_init(72); //延时初始化LED_Init(); //初始化与LED连接的硬件接口 /************************************/ while(1){LED13=0; //LED灯亮delay_ms(6000); //LED灯闪烁LED13=1; //LED灯灭}
}
程序效果,如图
寄存器配置说明
led.h头文件——PCout(13)说明
由于这个函数还没有研究明白,暂时不做详细描述
#define PCout(n) BIT_ADDR(GPIOC_ODR_Addr,n) //输出
#define PCin(n) BIT_ADDR(GPIOC_IDR_Addr,n) //输入
led.c寄存器配置说明
APB2 外设时钟使能寄存器(RCC_APB2ENR)
GPIO_C 位于APB2时钟上,4号为置1时钟使能(开启),置0时钟关闭
位操作:APB2ENR|=1<<4 讲1从0号位移动到4号位,再进行或运算(有1则1,其余不变)
清空 端口配置高寄存器 端口配置高寄存器(GPIOx_CRH)
GPIOC_13位于13位属于高位,23/22/21/20四个位控制GPIOc_13,
位操作CRH&=0XFF0FFFFF;清空 端口配置高寄存器,与运算(有0则0)
位操作CRH|=0x00100000;P13 推挽输出,最大速率10MHZ
端口输出数据寄存器 端口输出数据寄存器(GPIOx_ODR)
GPIOx->ODR 端口数据输出寄存器可写可读,可以设置IO口输出的值
GPIOC->ODR|=1<<13;//设置GPIOc_13 端口输出1(高电平)LED熄灭
执行完初始化函数后—LED不亮,执行GPIOC->ODR|=0<<13;或者LED13=0;才亮;
文章结束,初次写文章,比较混乱,目的是知识分享,谢谢大家欢迎讨论
STM32_寄存器版本代码第一篇LED灯相关推荐
- 51单片机入门 第一篇:LED灯
文章目录 前言 一.LED原理图 二.创建keil5工程 三.代码的编写 四.程序的烧录 总结 前言 本篇文章讲正式带大家开始学习51单片机,希望这些文章能够很好的帮助到大家学习51单片机. 一.LE ...
- 点亮第一颗LED灯—树莓派篇
点亮第一颗LED灯-树莓派篇 学习一种新编程语言的第一个程序往往是Hello World,那么在学习单片机方面的Hello World是什么呢,答案应该是点亮第一个LED灯.记得当初学习C51和STM ...
- STM32F103C8T6基础开发教程(HAL库)—点亮第一颗LED灯
STM32F103C8T6基础开发教程目录 STM32F103C8T6基础开发教程(HAL库)-开发环境配置 STM32F103C8T6基础开发教程(HAL库)-Keil添加注释的快捷键 STM32F ...
- 30个物联网传感器小实验:三行代码点亮LED灯
30个物联网传感器小实验:三行代码点亮LED灯 三行代码点亮LED灯 LED灯闪烁 LED灯调亮度 LED淡入淡出 不写一行代码点亮LED灯 全彩RGB灯 面包板 30个物联网传感器小实验:三行代码点 ...
- 51单片机入门学习篇-led灯、按键、数码管、中断
文章目录 前言 一.Proteus仿真 二.Keil代码编写 1.流水灯 2.来回点灯 3.按键操作 4.中断操作 5.数码管 6 动态数码管 三. 练习题 总结 前言 本文用来记录博主学习单片机的过 ...
- 寄存器 控制STM32F103C8T6 点亮LED灯
关于 编译生成的 文件类型介绍: .hex 可用串口i进行 烧录 的 16进制 文件. .axf 是通过 link 方式 进行直接仿真 下载的 文件. .sct 是编译过程中 生成的 加载.分载文件. ...
- leach协议c++代码_入门教程4:教你STM32F407标准库移植机智云代码(控制LED灯)
我们知道,使用机智云自助开发平台会根据产品定义的数据点生成对应产品的设备端代码即MCU代码包.自动生成的代码实现了机智云通信协议的解析与封包.传感器数据与通信数据的转换逻辑,并封装成了简单的API,且 ...
- iOS-通过Message框架开发一个Sticker Pack(无需代码)(第一篇)
一.概述 iOS 10 引入了Message框架,开发者可以为苹果内置的Messages应用开发扩展. 目的:通过开发一个应用扩展,可以让用户个能应用在Message应用中交互. Message框架支 ...
- STM32下的LED灯闪烁
文章目录 一.实验原理 1.1.关于STM32 1.2.关于寄存器 二.点亮LED灯 2.1配置时钟 2.2配置输出模式 2.3点亮LED 三.进阶 !流水灯 3.1具体思路 找到端口输出地址 3.2 ...
最新文章
- 兰戈 —— Rango
- 某程序员求助:30万年包留在家乡华为,50万年包去新加坡shopee,选哪个?
- 编译安装pdo mysql_centos 6.5下编译安装php5.6,pdo_mysql问题。
- SUSE各个系统版本安装saltstack方法
- 【经典回放】多种语言系列数据结构算法:归并排序
- Nginx的client_header_buffer_size和large_client_header_buffers学习
- 上项线体表位置_心理成熟的人都有哪些具体表现呢?
- ARM处理器基本指令大全
- jquery中prop()方法和attr()方法的区别
- 吴恩达深度学习4.2练习_Convolutional Neural Networks_Happy House Residual Networks
- ZeroMemory(百度百科 ZeroMemory)
- windows下putty 连接linux远程管理
- 20169219 使用Metaspoit攻击MS08-067实验报告
- 万亿美元软件浪潮来临,开发者是核心!
- Spring之切入点表达式
- 二次录入已经OUT! 4S店销售用小帮软件机器人教你做人!
- 极乐净土html5代码,天谕手游极乐净土乐谱代码分享
- 复变函数:复数基本知识、欧拉公式、复变函数的导数、解析函数
- Python库(x)纯小学生(我)自制
- 新一代防泄密系统即将发布