STM32学习(二):新建工程与GPIO口输出

STM32使用方式

(1)寄存器(不推荐)

(2)库函数

(3)HAL图形化

工程新建和配置

主要是在新建工程中选择C8?

然后按下面这个路径找头文件

这个STM32F10.H类似于51单片机中的REG52.H

两个SYSTEM是用来配置时钟

在这个路径下找到很多库函数

然后和上面的两个.h和.c一并放在工程文件目录下新建的Start文件夹 

至此外围配置完成,下面需要配置内核,在下面这个路径下找到一个.c和一个.h,复制到start中

然后把start中所有文件添加到工程中的start组,其中库我们需要md.s后缀的,c和h一并添加

添加头文件路径:

按照这个方法,把start文件夹添加进来

然后用在工程文件内外分别添加user文件夹,添加c文件,注意C文件保存的位置要在文件夹外的USER一致

更改显示设置

主要依靠右上角的扳手工具,编码方式要改成UTF8,也可以调字体和颜色

硬件连接

 

将STLINK与主芯片连接

在魔术棒-Debug里把调试器选择成为STLINK

随后在按右边的SETTING,单击Reset and Run立马复位并执行

用寄存器的方式操作STM32

#include "stm32f10x.h"                  // Device header
int main(void)
{
	RCC->APB2ENR=0x00000010;//打开GPIO的时钟
	GPIOC->CRH=0x00300000;//打开这个开口
	GPIOC->ODR=0x00002000;//打开PC13口,就是芯片上灯的位置,这个芯片灯就被关掉了
	while(1)
	{
	}
}

用库函数的方式操作STM32

在如下文件夹找到库函数,第一个是内核,下面的是外设 

随后把下面这个文件夹和上面这个文件夹的所有文件放在工程文件的LIBRARY文件夹下

同样在KEIL软件里添加组,添加已存在的文件

然后在这个路径下找到模版文件

 

把两个it和一个conf文件复制下来,粘贴到工程文件的user目录下, keil内部的user也要加

随后在头文件的最底下找的这个复制

打开魔术棒的C++,把define定义好,然后把文件路径包含

测试工程电灯程序

#include "stm32f10x.h"                  // Device header
int main(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//通过打开函数定义选择GPIOC ENABLE的参数,函数用于打开时钟
	GPIO_InitTypeDef GPIO_InitStructure;//定义一个结构体,观察注释,用ctrl+f可以搜索位置
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//通过查找配置好mode
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;//同上,查找的时候选MEMBER
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//然后就可以填上结构体名字了
	GPIO_Init(GPIOC,&GPIO_InitStructure);
	GPIO_SetBits(GPIOC,GPIO_Pin_13);//打开13口灯
//	GPIO_ResetBits(GPIOC,GPIO_Pin_13);//关闭13口灯
	while(1)
	{
	}
}

启动文件配置

start中使用哪个启动函数取决于芯片型号

总结:建立工程的步骤

建立工程文件夹,Keil中新建工程,选择型号

工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹

工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加到工程分组里

工程选项,C/C++,Include Paths内声明所有包含头文件的文件夹

工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER(使用标准外设驱动)

工程选项,Debug,下拉列表选择对应调试器,Settings,Flash Download里勾选Reset and Run

工程架构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值