库函数版和寄存器版的系统时钟设置的区别:
**1.**库函数的目的是让用户应用的,而寄存器更加原始
库函数的系统时钟是默认设置的,且放在启动文件里。而寄存器版的系统时钟是Stm32_Clock_Init(336,8,2,7);.
**2.**库函数的快捷的,但不是每个芯片都有的;寄存器是复杂的,但是每个芯片厂商都有提供系统的寄存器设置信息。
分别打开库函数和寄存器版的I/O口设置:
库函数:
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);gotoh后先通过assert_param();函数检查格式是否正确同时只要是ENABLE,RCC->AHB1ENR |= RCC_AHB1Periph;接着给对应的寄存器赋值。
寄存器:
RCC->AHB1ENR|=1<<0; //使能PORTA口时钟 (就一句赋值语句就行了)。
从这里也可以看出寄存器的第二个区别是(打个比方,做为嵌入式开发我们经常会用到电子元器件,这是我们有两个选择一是在淘宝直接买一个模块,二是在在淘宝买这个模块的对应的元器件然后自己焊接)这个就可以看出通过寄存器的设置确实有利于理解对应的工作原理,而且对于简单的应用来说,确实很快捷。但是随着你做的东西越来越多,越来越复杂,就无暇顾及每一个功能模块的具体运行情况,这时一般的话会在网上直接买对应的模块,然后利用串口,iic,spi等通信方式进行获取对应的数据即可。这时,我在想学习寄存器目的就是为了更快理解一个新的芯片。
3.在程序上的区别(以正点原子的程序为分析对象)
a.下图是STM32正点原子的led的初始化程序,直到今天我才发现有中的是正点原子公司写的。里面的结构体,使能时钟函数,I/O设置位等函数都是ST公司写的。调用是st的固件库。
上图的stm32f4xx_gpio.h等头文件其实就是库函数的来源。正点原子的“库函数”是实际应用的函数,是放在HARDWARE文件夹里。
**b.**下面的图是寄存器板的led初始化函数,这些函数是正点原子写的,可谓是需要什么就写什么函数,大大的提高了程序的运行效率。(只引用stm32f4xx_.h)
关键字:STM32 库函数 寄存器
引用地址:
STM32库函数和寄存器的区别
推荐阅读最新更新时间:2024-10-30 10:27
STM32 DMA笔记
在做实验之前,首先必须明白什么是DMA,DMA的作用又体现在哪里。 DMA,即直接内存存储,在一些数据的传输中,采用DMA方式,从而将CPU解放出来。让CPU有足够的时间处理其他的事情。 stm32使用DMA的相关操作: 1、DMA的配置 要配置的有DMA传输通道选择,传输的成员和方向、普通模式还是循环模式等等。 void DMA_Configuration(void) { DMA_InitTypeDef DMA_InitStructure; //DMA设置: //设置DMA源:内存地址&串口数据寄存器地址 //方向:内存-- 外设 //每次传输位:8bit //传输大小DMA_BufferSize=SENDBUF
[单片机]
STM32读写TXT文件(可追加数据)的示例代码
/* 说明: * 下面的函数是测试在已有的 大海.txt 文件下继续添加数据 * 测试条件在TF卡中建立 大海.txt 文件,并在文件中添加内容,测试过程中可以分别添加 512数据,=512数据, 512数据进行分别测试 * 作者:Flame * 测试时间:20130711 */ unsigned int FATFSNumSize;//文件大小存储变量,为了查看方便放到函数外部 void OutPutFile(void) { unsigned int a; FILINFO finfo; DIR dirs; char path ={ }; //目录名为空,表示是根目
[单片机]
基于STM32单片机的电源设计
1. STM32 数据手册电源部分研读 RTC电源管脚为V BAT, 电源范围为1.8~3.6V,主要用于RTC时钟的供电, RTC在大部分场合用于保存一些重要的参数,比如在电脑主板上用于保存boss的信息, 如果这个电源丢了将导致无法重启,在单片机中低功耗设备常常也会使用这个RTC进行定时的唤醒功能,在普通的MCU中常用于做实时时钟。 VDD为数字电源,电源范围也是1.8~3.6V,在芯片内部集成了电压转化器,一般芯片内核供电为1.2V,图示的Regulator为转换器,将VDD电源稳压至1.2V。数据手册建议加入11个100nF和4.7uF的电容,不过实际应用中,只需要每个VDD加入一个100nF的去耦电容。 下图为模
[单片机]
STM32入门学习笔记之EEPROM存储实验5
(2)创建at24cxx.c文件并输入以下代码。 /********************************************************************************************************* EEPROM 驱 动 程 序 *********************************************************************************************************/ #include at24cxx.h #include delay.h /************
[单片机]
STM32初学笔记1之RCC(下)
前面写过一篇文章: STM32初学笔记之RCC(1) ,在这一篇文章中介绍了系统时钟的设置的几个函数,刚刚突然想追踪SystemInit()的时候才发现,原来我写的这个所谓的RCC_ClkConfig.C和RCC_ClkConfig.H文件一点用处都没有,因为这个在库源文件system_stm32f10x.c中全部都有,而且比我的那个好用很多,所以,哎,我有百忙了。下面就具体显示一下我的这个函数追踪过程吧。 1、首先在主函数中添加一下一条语句: 2、将光标移动到SystemInit()函数上,单击右键,选择 go to the definition of 'SystemInit' 3、我们可以看到这个函
[单片机]
STM32定时器(二)定时器中断
一、STM32定时器的分类 1.1 按照内核、外核、特定、常规分为4大类: 1)内核定时器:Systick 2)外设定时器:特定应用定时器+常规定时器 3)特定应用定时器:LPTIM,RTC,WTD,HRTIM 常规定时器:基本定时器TIM6&TIM7)、通用定时器(TIM2TIM5,TIM9TIM14)、高级定时器(TIM1&TIM8) **1.2 CPU时序 ** 此处我们提一下学习单片机原理的课程时,提到的几个CPU时序。 振荡周期:为单片机提供定时信号的振荡源的周期。 状态周期:1个状态周期=2个振荡周期 **机器周期:1个机器周期=6个状态周期=12个振荡周期** 指令周期:完成1条指令所占用的全部时间,以机器周期为
[单片机]
看得见的新建STM32工程步骤
1. 新建文件夹 DOC文件夹: 可以存放readme.txt等项目文档 Library文件夹: 可以存放ST库源码,直接复制ST库的源代码到Library文件夹,另外startup只需复制和 芯片 对应的.s文件即可,一般存放在 -ST库3.5.0源码STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3Device SupportSTSTM32F10xstartu parm Listing文件夹: 可以存放Keil生成的List文件,需要在Keil中设置,List的存放路径。 Output文件夹: 可以存放生成
[单片机]
STM32开发笔记13: 在keil中使用不初始化变量
单片机型号:STM32F030R8 我们进行程序设计的时候,都会知道,系统上电或复位时,会执行变量初始化操作,但是有些情况下,我们并不希望变量初始化,例如,在系统异常复位发生后,我们希望系统能够迅速恢复复位前的现场状况,这样就希望变量能够保留原先的值,而不被初始化。实际上,大家都知道,变量是存储在RAM中的,只要不掉电,变量的数值是不会改变的,只要我们不让系统进行初始化操作就可以了。 不同的编译环境,有不同的设置方法,本文介绍在Keil中设置不初始化变量的方法。在这里需要说明的是,网上介绍了许多的设置方法,但并不是所有的方法都起作用,本文将介绍一种最为直接的方法。 1、打开Options for Targe
[单片机]