『壹』 STM32处理器寄存器配置。
一、端口配置寄存器是用于配置GPIO工作模式的,具体各位的意义要看手册:
二、CN7[1:0]是指CN7配置占两位,分别对应自己所在位的高位(1)、低位(0),手册中如此标识也是为了便于说明。如果占用3位,可标识为xxx[2:0],以下说明时可表示bit2,bit1,bit0;其他同理。
三、->是结构体指针引用结构成员符号,GPIOC本质上是结构体指针,结构体:
typedefstruct
{
vu32CRL;
vu32CRH;
vu32IDR;
vu32ODR;
vu32BSRR;
vu32BRR;
vu32LCKR;
}GPIO_TypeDef;
1<<11,是移位操作,即1向左移11位,这个11是根据所要设置寄存器的位置来确定的,具体的可以查看手册。明白这个意思,可以举一反三。
四、位31:30就是指在整个32位寄存器中,所占位置为31位和30位。注意,一般位标识是从0开始的,所以32位寄存器表示位31到位0.
『贰』 最近在自学stm32,借了几本书里面的东西太多了各种寄存器时钟中断,大神告诉我是不是该有针对的学啊
最近在自学学stm32借了几本书里面的东西太多了各种寄存器时钟中断,大神告诉我是不是该有针对的学啊,该怎么学,谢谢学stm32不同于学51,那上百的寄存器根本记不住,介绍的书籍也都是大部头,看后面的前面就忘了,所以不能用这个方法学习。建议你掌握好C语言(stm32练习一下汇编还可以,做项目太复杂了,不建议去学,我从汇编过来的都扔了!)和模块化编程,然后一个子系统一个子系统的去学,一个子系统一个模块,以后即使做工程都可以借鉴甚至拿来就用,等于有了自己的库。给你个连接,保证你受益匪浅。http://www.openedv.com/forums/show/2.htm;jsessionid=
『叁』 学习STM32的寄存器版本好还是库函数版本好求大神解答
库函数版本的好读写,便于维护,寄存器版本的不如库函数的开发周期短,做项目的话还是推荐库函数版本。寄存器的是让大家学习的比较好
『肆』 stm32学寄存器版还是库函数版好
STM32属于32位了 要学库函数更好,8位对应位操作,16位对应寄存器操作,32位对应库函数操作。
『伍』 求STM32内部FLASH开辟成EEPROM寄存器版本程序
应该能用吧,好长时间没用过了/*文件名:flash.c作者:BJTU SY0702 YZ时间:2011,3,12功能:STM32的flash编程,注意要在config.h 中添加#define _FLASH_PROG*/#include "includes.h"#include <stm32f10x_lib.h>/*flash的写函数:输入:u32 StartAddrflash起始地址u32 *p_data待写入数据指针u32 size写入数据的数量输出:0:正确执行非0:出错注意:输入数据一定是u32 的指针,即数据一定是按照4字节对齐写入的。所以:size也是u32的个数(字节数的4分之一)*/int flash_write(u32 StartAddr,u32 *p_data,u32 size){volatile FLASH_Status FLASHStatus;u32 EndAddr=StartAddr+size*4;vu32 NbrOfPage = 0;u32 EraseCounter = 0x0, Address = 0x0;int i;int MemoryProgramStatus=1;//为一是通过FLASH_Unlock();NbrOfPage=((EndAddr-StartAddr)>>10)+1;//有多少个页被擦除//清除所有已有标志FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);//擦页FLASHStatus=FLASH_COMPLETE;for(EraseCounter=0;(EraseCounter<NbrOfPage)&&(FLASHStatus==FLASH_COMPLETE);EraseCounter++){FLASHStatus=FLASH_ErasePage(StartAddr+(PageSize*EraseCounter));}//开始写数据Address = StartAddr;i=0;while((Address<EndAddr)&&(FLASHStatus==FLASH_COMPLETE)){FLASHStatus=FLASH_ProgramWord(Address,p_data[i++]);Address=Address+4;}//检验数据是否出错Address = StartAddr;i=0;while((Address < EndAddr) && (MemoryProgramStatus != 0)){if((*(vu32*) Address) != p_data[i++]){MemoryProgramStatus = 0;return 1;}Address += 4;}return 0;}
『陆』 学习Stm32使用固件库和写寄存器有什么区别
两个使用的角度不同
使用固件库,目前比较多的例程是使用固件库编写的。官方的例子也都采用固件库方式。特点就是简单,易于理解,资料多。如果你没有CortexM系列内核的开发基础,建议从固件库开始玩起。等有一定基础,或是特别需要时再用寄存器。
使用寄存器,想要深入理解CortexM3内核或是需要为了获得更好的可移植性,学习寄存器编程会比较有帮助。但是从专业的角度上看,寄存器更贴近底层,对外设的工作原理和运行机理会有更深的理解。
(6)牛人的stm32学习笔记寄存器版本扩展阅读:
STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。
寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。
在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,寄存器有累加器(ACC)。
『柒』 学习STM32的寄存器版本好还是库函数版本好求大
本人设计单片机有10多年的经验了,从stm32出来到现在也一直在用,我还是认为用寄存器版本比较好,比较灵活,有好多人说直接用库函数方便,方便是方便,当你搞大型程序的时候就知道了,问题一大堆你找都不知道去哪里找,因为你不懂库函数里面的东西,库函数不是你写的。有好多配置库函数是没有给修改入口的。什么ADC的缓冲呀!等等。所以建议你还是用寄存器版本为好
『捌』 学STM32那些寄存器必须记下来的
没必要记下来吧。一般的也就是开始配置的时候用下,以后就是通用的C了,最多在操作下IO,其实都打包好函数了,用的方便。反正我不记的。
『玖』 百度文库 牛人的STM32学习笔记(寄存器版本) 帮忙下载一下 谢谢
附件已上传 请下载 满意请采纳回答
『拾』 stm32自学笔记讲的那个版本 谢谢
这是基于正点原子的ALIENTEK MiniSTM32开发板的自学笔记,这个开发板的MCU芯片型号是STM32F103RBT6