STM32F103

下载完官方固件库之后,我们创建一个文件夹,里面再创建几个子文件夹,用于存放需要用到的头文件和源文件,以及存放使用keil过程中产生的文件。创建好之后,我们再创建一个Project文件夹来创建一个工程。使用keil5在Project文件夹中创建这个工程,在其中配置好源文件以及头文件路径(详细参考baidu),就可以开始编写自己的程序了。

我们使用官方固件库是为了使用已经编写好的函数,比如配置时钟的RCC_APB2PeriphClockCmd(),初始化GPIO口的GPIO_Init()函数等等,我们可以通过右键打开的菜单中跳转到声明和定义这个函数的位置,查看函数的用法以及需要的参数。

在查看函数的定义时,在定义上面有一些注释,其中的param就是我们要用到的参数,多个param按顺序对应了函数中的参数,里面会提到可以使用什么作为参数。例如GPIO_ResetBits()函数,

/**
  * @brief  Clears the selected data port bits.
  * @param  GPIOx: where x can be (A..G) to select the GPIO peripheral.
  * @param  GPIO_Pin: specifies the port bits to be written.
  *   This parameter can be any combination of GPIO_Pin_x where x can be (0..15).
  * @retval None
  */
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_PIN(GPIO_Pin));
  
  GPIOx->BRR = GPIO_Pin;
}

第一行brief是简要的描述其作用,第二行是param,对应了第一个形参GPIO_TypeDef* GPIOx,这里写着x可以是A到G,也就是第一个参数可以是GPIOA到GPIOG。第二个同理,可以是GPIO_Pin_0到GPIO_Pin_15.

学会查看函数作用之后,我们就可以使用函数进行开发了,比如配置PA8或者PD2来操作片上的LED,这里示例打开LED0(对应PA8)

#include "stm32f10x.h"

int main(void)
{
    //创建一个GPIO_InitTypeDef结构体
	GPIO_InitTypeDef  GPIO_InitStruct;
    //使能GPIOA对应的时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	//定义结构体里面的变量
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8;
    //初始化
	GPIO_Init(GPIOA,&GPIO_InitStruct);
    //低电平输出,LED亮
	GPIO_ResetBits(GPIOA, GPIO_Pin_8);
}

写完后,我们要在Debug->Setting->Trace里设置为72MHz,否则小灯没有反应。

当然,可以将用得多的变量用宏定义改一下名字,这样在修改为其他变量时会比较方便,也可以自己创建多一个源文件和头文件编写函数进行模块化处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值