STM32如何新建工程+寄存器点亮LED灯

发布者:chaxue1987最新更新时间:2022-09-23 来源: csdn关键字:STM32  新建工程  寄存器  点亮LED灯 手机看文章 扫描二维码
随时随地手机看文章

STM32新建工程跟51差不多的,但是32会多点东西,比如加载芯片支持包啦,启动文件啦。还有一个很重要的 你得有KEIL5 是吧哈哈 我这里就不写如何安装KEIL5了 网上挺多资源的,这里就主要写一下如何新建工程点亮一个LED灯。


我这里用STM32F103C8T6

我这里用STM32F103C8T6


一: 如何新建工程

1:下载芯片支持包Keil.STM32Fxxxx.pack文件

1.进入KEIL5官网。

在这里插入图片描述
在这里插入图片描述

找到自己的型号

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

这样就下载了 芯片支持包了。


2:打开KEIL5 加载Keil.STM32Fxxxx.pack文件

.打开KEIL5

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

把 下载的 Keil.STM32Fxxxx.pack文件 加载进去。


3:添加编写代码文件main.c 以及 添加启动文件

1.新建一个文件夹 我这里就叫STM32吧,我们所有的东西都方面去。

在这里插入图片描述

2.在STM32文件夹里面新建一个.c文件 (main.c)


3.在你安装KEIL5软件的文件夹进入 Keil——STM32F1xx_DFP——2.3.0——Device——Source——ARM


我这里是用的STM32F103板子 启动文件名:startup_stm32f10x_hd.s

都放在STM32文件夹里面

如图所示:

在这里插入图片描述

4.在KEIL5新建工程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我这里是STM32C8

在这里插入图片描述

把刚我们新建的main.c 以及启动文件加载进到工程来

在这里插入图片描述

加载后效果

在这里插入图片描述

双击main.c

进行代码编写。

在这里插入图片描述

二: 如何寄存器点灯

1:看单片机的原理图 找到LED灯

在这里插入图片描述

这个灯是 PC13引脚

看原理图可以看出 让GPIOC13输出低电平 就能点亮

那么我们得让

打开控制GPIOC13的时钟

让GPIOC13 输出模式

让GPIOC13低电平


2:看中文参考手册配置寄存器

2.1:打开管 GPIOC13的时钟

时钟就相当于一个阀门开关,或者理解成水龙头,你打开了 才有水出来,也就是你打开才能工作。


看中文参考手册 系统架构 找到你的GPIOC 看看是谁管的。

在这里插入图片描述

找到时钟的起始地址 也称为 基地址

在这里插入图片描述

由于是APB2管 我们也要找到 APB2外设时钟使能寄存器的偏移地址

在这里插入图片描述

要打开GPIOC13的时钟


时钟起始地址 + APB2外设时钟使能寄存器的偏移地址 = 控制GPIOC13的时钟的寄存器地址

0x4002 1000 + 0x18 = 0x4002 1018


如何打开呢 再中文参考手册继续参考

在这里插入图片描述

在位4 中 1 为打开端口C时钟

那么我们就是 不改变其他位的情况下 用或 运算即可。


//打开时钟

*(unsigned int *)0x40021018 |= 0x01 << 4;    //(左移四位)


2.2:配置GPIOC13 为输出模式

1.找到GPIOC 的起始地址 (基地址)

在这里插入图片描述

GPIOC 的起始地址:0x4001 1000

2。找到端口配置高寄存器偏移地址:

在这里插入图片描述

偏移地址:0x04

在这里插入图片描述

0x4001 1000 + 0x04 = 0x4001 1004


设置成推挽输出 以及 输出模式 设置最大为10MHz:


//推挽输出模式 

*(unsigned int*)0x40011004  |= 0x01 << 20; //(左移20位)


2.3:让GPIOC13引脚输出低电平

1.找到端口输出数据寄存器

在这里插入图片描述

偏移值:0x0c

在不影响其他位数据时,我们想让第13位输出低电平。


//GPIOC13低电平

*(unsigned int*)0x4001100C &= ~(0x01 << 12); //左移12位


&运算例子:

1001 0111 我想让第3位为0 其他的不变 那么我们用到与操作



三:代码整合及烧写

void SystemInit()

{

//为了编译器不报错

}


int main()

{

//打开时钟

*(unsigned int *)0x40021018 |= 0x01 << 4;  

//推挽输出模式 

*(unsigned int*)0x40011004  |= 0x01 << 20; 

//GPIOC13低电平

*(unsigned int*)0x4001100C &= ~(0x01 << 12); 

}

在这里插入图片描述

编译程序。把HEX文件烧写到板子上面。


继续加油!

关键字:STM32  新建工程  寄存器  点亮LED灯 引用地址:STM32如何新建工程+寄存器点亮LED灯

上一篇:基于STM32F103入门1——点亮LED灯
下一篇:32 配置两个串口透传 中断函数配置

推荐阅读最新更新时间:2024-11-12 21:03

STM32】3-外部中断实验(EXTI)步骤及解析
一、外部中断介绍 1.1 EXTI 简介 STM32F10x外部中断/事件控制器(EXTI)包含多达 20 个用于产生事件/中断请求的边沿检测器。EXTI的每根输入线都可单独进行配置,以选择类型(中断或事件)和相应的触发事件(上升沿触发、下降沿触发或边沿触发),还可独立地被屏蔽。 1.2 EXTI 结构框图 1.3 外部中断/事件线映射 STM32F10x的EXTI具有20个中断/事件线,如下: 二、外部中断配置步骤 要使用外部中断我们就需要先配置它,通常都需经过这几步:(EXTI相关库函数在stm32f10x_exti.c和stm32f10x_exti.h文件中) (1)使能IO口时钟,配置IO口模式为输入 (2)
[单片机]
【<font color='red'>STM32</font>】3-外部中断实验(EXTI)步骤及解析
stm8s开发(一) 使用IAR新建工程
附上stm8s在IAR环境下的项目工程,包括了SPI、IIC、PWM、AWU、USART、EEPROM等片上硬件的初始化代码。 http://download.csdn.net/detail/devintt/9454188 新建工程是第一步! a)创建一个 Workspace 首先,创建一个workspace。选择菜单File New Workspace b)创建一个 Project 1)创建一个新的工程,选择 Project Create New Project,创建新工程的对话框,如下图所示: 2) Tool chain 默认是 STM8 Series。 无需再选择。 3)在 Project templates 中选择“
[单片机]
STM32 f103搭配LM386声音传感器实现简单音乐识别
1.前言 2019年12月初,有一个中国机器人技能大赛中的双足机器人比赛项目,意思是机器人识别音乐跳对应节奏的舞蹈,五首音乐随机抽三首歌曲,音乐停,机器人停。 新比赛,新项目,难度自然有,坑也不少。希望这篇文章能给大家带来一点帮助。废话不多说,进入正题。 2.效果 (健康歌)每100ms采样一次,歌曲前5秒内共测50次数据,重复12组 (卡路里) 重复7组 可以看出一首歌经过多次测值,其采样值数组呈现出有规律的特征;不同的歌曲的特征也有较好的区分度。达到了区分歌曲的效果。下面讲讲具体实现步骤。 3.思路 href= 做什么:识别不同音乐,识别声音有无。 href= 怎么做:a.利用传感器判断出音乐或声音
[单片机]
<font color='red'>STM32</font> f103搭配LM386声音传感器实现简单音乐识别
基于STM32神舟系列开发板的串口通信源码
#include stm32f10x.h #include stm32f10x_usart.h void RCC_Config(void); void GPIO_Config(void); void USART_Config(void); void Put_String(u8 *p); int main() { RCC_Config();//配置时钟 GPIO_Config();//配置输入输出 USART_Config();//配置发送接收 //GPIO.Pin选择待设置的 GPIO 管脚,使用操作符 | 可以一次选中多个管脚。 Put_String( 请发送数据_ ); while(1
[单片机]
STM32 Cotex-M3处理器系列编程】外部按键中断
#include stm32f10x.h unsigned int TimingDelay; void Delay(unsigned int x) { TimingDelay=x; while(TimingDelay--); } void EXTI9_5_IRQHandler(void) //中断处理函数 { unsigned int tt; tt=6553500; if(EXTI_GetITStatus(EXTI_Line5)!=RESET) { GPIO_SetBits(GPIOC, GPIO_Pin_7); while(tt--); GPIO_ResetBits(GPIO
[单片机]
STM32串口中断接收数据
数据帧满足下面格式: 帧头部(Head) 类型(Type) 长度(Length) 值(Value) CRC校验 2字节 1字节 1字节 X字节 2字节 0xaa 0x55 X void USART6_Init (void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART6,ENABLE); RCC
[单片机]
队列的介绍和利用环形队列实现STM32进阶之串口环形缓冲区的概述
队列的概念 在此之前,我们来回顾一下队列的基本概念:队列 (Queue):是一种先进先出(First In First Out ,简称 FIFO)的线性表,只允许在一端插入(入队),在另一端进行删除(出队)。 队列的特点 类似售票排队窗口,先到的人看到能先买到票,然后先走,后来的人只能后买到票 队列的常见两种形式 普通队列 在计算机中,每个信息都是存储在存储单元中的,比喻一下吧,上图的一些小正方形格子就是一个个存储单元,你可以理解为常见的数组,存放我们一个个的信息。 当有大量数据的时候,我们不能存储所有的数据,那么计算机处理数据的时候,只能先处理先来的,那么处理完后呢,就会把数据释放掉,再处理下一个。那么,已经处
[单片机]
队列的介绍和利用环形队列实现<font color='red'>STM32</font>进阶之串口环形缓冲区的概述
stm32中的NVIC_Configuration(void)函数
用于映射中断的处理函数,就知道这么多,不求甚解呀, void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; #ifdef VECT_TAB_RAM /* Set the Vector Table base location at 0x20000000 */ NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); #else /* VECT_TAB_FLASH */ /* Set the Vector Table base location at 0x08000000 */ NVIC_SetVectorTable
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved