STM32单片机学习笔记3

这次咱们整整库函数

这东西就是构建巨麻烦,但是写起来简单。我们在那些文件当中已经提前定义好了,不需要我们再去特意地去翻寄存器地址,方便编写程序。咱们一起看看这个东西怎么构建

老样子,建立新文件夹,里面建立个user文件夹。之后我们打开keil5,按要求构建(主要是要把本体构建在user文件夹内,然后选对机型)。我们可以看到objects,listings两个文件夹和两个其他文件(其中一个是.uvoptx文件)

之后在文件夹里新建三个文件夹,可以命名为obj,core,stm32f10x_fwlib(叫别的也行)

大概长这样(我早弄好了,所以看看视频里的效果吧)

之后像寄存器那样挪文件

 

 这三步,这次就不多讲了

之后在这个界面添加文件 

 在每个文件夹之后,要再次添加对应文件,否则左侧的内容栏是不显示的。

这个时候运存程序会报错。我们需要进一步的操作

像寄存器那样去在魔术棒里的c/c++区里添加文件

 

这里注意,一定只添加inc文件,下边的别添加。

 下一步弄一个宏定义

 

注意这步别忘了,否则绝大多数函数不可用。 

好了,你已经学会构建基本框架了。接下来我们来学习走马灯。

#include "led.h"
#include "stm32f10x.h"

void LED_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	
	RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOB,ENABLE);
	RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOE,ENABLE);
	
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOB,&GPIO_InitStructure);
	GPIO_SetBits(GPIOA,GPIO_Pin_8);
	
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOE,&GPIO_InitStructure);
	GPIO_SetBits(GPIOD,GPIO_Pin_2);
}

 把这堆代码写在led.c当中。

(建立文件的话可以直接新建文件,这个时候在keil里会显示text1,text2等。咱们先保存到对应文件里【一般是存hardware里】,然后修改文件名称为led.c。led.h同理。一会我发放头文件的代码段)

里面有很多奇奇怪怪的名字,基本上都是GPIO这个,GPIO那个的,咱们可以去

 图片中上边打开的几个文件中去翻定义,看看我们需要的内容。背不过也没事,进去翻定义就行

#ifndef __LED_H
#define __LED_H

void LED_Init(void);
#endif

这段给led.h

#include "stm32f10x.h"
#include "led.h"

 
 int main(void)
 {
	 
	 LED_Init();
	 
	 
	 while(1) 
	 {
		 GPIO_SetBits(GPIOB,GPIO_Pin_5);
		 GPIO_SetBits(GPIOE,GPIO_Pin_5);
		 
		 GPIO_ResetBits(GPIOB,GPIO_Pin_5);
		 GPIO_ResetBits(GPIOE,GPIO_Pin_5);
	 }
	 

	 
	 
	 
	 
 }

这段给main.c

再次注意,我这是迷你板,跟战舰板和经营板的寄存器地址不一样,一定注意甄别,别整错了。

然后下载运行即可。咱们可以用下载器,也可以用flymcu烧录进去。

多学点,咱学学串口操作。这次必须要用flyMCU了,仅仅靠下载器是不可以操作串口的。

串口设置的一般步骤可以总结为如下几个步骤:
1) 串口时钟使能,GPIO 时钟使能。
2) 设置引脚复用器映射:调用 GPIO_PinAFConfig 函数。
3) GPIO 初始化设置:要设置模式为复用功能。
4) 串口参数初始化:设置波特率,字长,奇偶校验等参数。
5) 开启中断并且初始化 NVIC,使能中断(如果需要开启中断才需要这个步骤)。
6) 使能串口。
7) 编写中断处理函数:函数名格式为 USARTxIRQHandler(x 对应串口号)。
代码

 串口发送字符串:

 前边的那一堆构建基本同理,不再赘述

大概整理一下,这次我们学习的是库函数的构建,库函数的走马灯,库函数的串口通信。

内容可能有些多,但是库函数相对简单。

库函数这东西,构建的时候累死个人,要多麻烦有多麻烦,但是等到我们真正去用的时候,比寄存器要简单得多。我就说嘛,谁没事去背寄存器的那一大堆地址(?)

这次的学习就到这里,谢谢观看。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值