STM32学习笔记(二)

STM32新建工程

  • STM32F10x标准外设库,解压

  • 打开Keil5,新建Project

  • 添加启动文件

  1. 将固件库中的压缩包打开:Libraries \Rightarrow CMSIS \Rightarrow CM3 \Rightarrow DeviceSupport \Rightarrow ST \Rightarrow STM32F10x \Rightarrow startup \Rightarrow arm 复制所有的文件,然后在建立的工程文件里新建一个Start的文件,将复制的东西粘贴到上面。然后在上面的STM32F10x层面,将.h和.c文件全部粘贴到Start文件里。

  2. 在Libraries \Rightarrow CMSIS \Rightarrow CM3 \Rightarrow CoreSupport将里面的.c和.h文件也复制到Start文件里,这两个是内核驱动的文件。

  3. 将上面两步添加的文件,添加路径到keil文件路径里。选择将Start里面的文件中startup_stm32f10x_md.s和.h与.c文件添加到Start文件里,还需要对软件添加头文件,利用魔术棒按键,将头文件添加进去。

  4. 为工程添加库函数,在创建的文件模版里继续添加一个叫Library的文件,用来存放库函数,在固件库中打开Libraries \Rightarrow STM32F10x_StdPeriph_Driver \Rightarrow src 复制里面所有的文件,粘贴到创建的Library文件库里,再打开inc文件夹,全选之后复制粘贴到Library文件库内,再在keil文件库内添加文件以及路径。

  5. 在keil文件targrt里创建Users文件,专门用来存贮主main函数。

  6. 在固件文件中的Project \Rightarrow STM32F10x_StdPeriph_Template 找到it结尾的文件以及conf.h的文件将其粘贴Users里面,并在keil文件里添加文件和路径。

  7. 在添加的代码中,找到其定义,找到一个语句

    #include "stm32f10x.h"
    #ifdef USE_STDPERIPH_DRIVER
      #include "stm32f10x_conf.h"
    #endif

    然后复制这个USE_STDPERIPH_DRIVER,打开魔法棒按钮,在页面进行操作文件之后文件配置就算完了,可以进行点灯操作了,之后对于单片机的学习,也是以对库函数的调用开始展开的。

利用STM32点灯

不同于51单片机直接调配寄存器,stm32具有库函数可以对单片机进行操作,更简洁、明了的进行操作,对单片机进行开发。

首先,先得开启时钟,使对应的外设进行使能之后才能展开应用。由于使用的是某宝上买的STM32F103C8T6,所以片上自带一个led灯,配置在PC13口,就是在C系列的13口上,总体来说是属于C口的,所以我们是用到了单片机的PC系列口。

我们从系统架构中可以看出,GPIOC是属于APB2里面的,所以得先开启APB2的外设时钟:

RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)

通过查看函数的定义,我们可以看出来需要两个参数(文档里面具有英文解释,所以直接展示结果)

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);

将GPIOC口使能之后,接下来就得对GPIO口的提出要求了,需要它怎么做,做什么:

GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)

可以看出,此函数的作用是指定ABC口之后,再定义一个结构体,按照结构体的要求对端口进行设置,所以我们选择,先定义一个结构体。

GPIO_InitTypeDef GPIO_InitStruct;

关于这里的GPIO_InitTypeDef是进行结构体定义名字,相当于一个过程,后面的GPIO_InitStruct才是结构体的名字。

将结构体定义好之后,就得配置它的每个参数,在将代码输入到keil中时,会自动弹出来需要配置的参数,然后就根据需求填写参数就行了。

GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;

然后将配置好的参数,然后将配置好的参数再声明一下:

GPIO_Init(GPIOC,&GPIO_InitStruct);

这样端口模式配置就好了,再接下来对端口的电位进行配置:

GPIO_SetBits(GPIOC,GPIO_Pin_13);

接下来就可以进行编译、烧录到硬件了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值