STM32单片机的一些事情-1.0

面包板的原理:

在这里插入图片描述
采用上图所示的面包板:特点:横通竖不通

stm32 最小系统板

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
系列:主流系列STM32F1
内核:ARM Cortex-M3
主频:72MHz
RAM:20K(SRAM)
ROM:64K(Flash)
供电:2.0~3.6V(标准3.3V)
封装:LQFP48

在这里插入图片描述

新建STM32工程文件:

采用标准库的方式去配置:
在这里插入图片描述
在这里插入图片描述
keil 5 里面新建工程 选择STM32S103C8T6
在这里插入图片描述
接下来在固件库中找到以下文件:
在这里插入图片描述
添加到刚刚的工程文件中去:
在这里插入图片描述
将头文件也加入进来:
在这里插入图片描述
类似于51的reg52.h

再加入寄存器的配置文件:
在这里插入图片描述
在keil 添加:启动文件只能选择一个,其余文件全部都要添加:在这里插入图片描述

如上图所示完成配置:
接下来添加头文件路径:加入之前的Start文件夹
在这里插入图片描述
工程文件下 新建User 用来存放主函数:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include "stm32f10x.h"                  // Device header

int main(void)
{
	while (1)
	{
	
	}
}

发现没有错误:
将上述程序通过DAP烧录到版子里:
发现灯灭了:
在这里插入图片描述
接下来编写程序让灯亮起来:

#include "stm32f10x.h"                  // Device header

int main(void)
{
	RCC->APB2ENR = 0x00000010;
	GPIOC->CRH = 0x00300000;
	GPIOC->ODR = 0x00000000;
	while (1)
	{
	
	}
}

灯亮
请添加图片描述

#include "stm32f10x.h"                  // Device header

int main(void)
{
	RCC->APB2ENR = 0x00000010;
	GPIOC->CRH = 0x00300000;
	GPIOC->ODR = 0x00002000;
	while (1)
	{
	
	}
}

灯灭:
请添加图片描述

以上是通过寄存器的方式去配置STM32虽然代码简洁,但是不太方便。
在这里插入图片描述
新建Library 添加STM32的标准库:

#include "stm32f10x.h"                  // Device header
灯亮:
int main(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOC,&GPIO_InitStructure);
	//GPIO_SetBits(GPIOC,GPIO_Pin_13);
	GPIO_ResetBits(GPIOC,GPIO_Pin_13);
	while (1)
	{
	
	}
}

灯灭:


#include "stm32f10x.h"                  // Device header
int main(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOC,&GPIO_InitStructure);
	GPIO_SetBits(GPIOC,GPIO_Pin_13);
	//GPIO_ResetBits(GPIOC,GPIO_Pin_13);
	while (1)
	{
	
	}
}

使用库函数虽然代码冗余,但是对其他io口比较友好。

新建工程时启动文件的选择:

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

上表就是一些常用的启动文件:
在这里插入图片描述

小结:

建立工程文件夹,Keil中新建工程,选择型号
工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹
工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加到工程分组里
工程选项,C/C++,Include Paths内声明所有包含头文件的文件夹
工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER
工程选项,Debug,下拉列表选择对应调试器,Settings,Flash Download里勾选Reset and Run
  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值