下面这些是在STM32的库文件中摘抄的,可以在以后的编程中利用这些方法。
以下为把IO口转化为一个结构体指针的步骤:
首先是GPIO的定义,把其转化为了一个结构体,然后定义一个该结构体的对象,并把该端口的基地址赋给它即可操作该IO口了。然后给该结构体内的变量赋值即是向对应的IO口的对应寄存器内赋值。
一、GPIO的定义
按各寄存器的顺序定义变量(定义32位的是因为寄存器的大小是32位的)(按寄存器顺序排放是因为结构体内的变量是按定义的顺序来顺序排放的,因此正好与IO口内的寄存器的排放相对应):
二、确定IO口的地址
以上为各外设的起始地址,以下为各GPIO的首地址(GPIO是挂载在APB2上的)
(故下面的写法是APB2的基地址加上各端口的偏移地址)
各GPIO的首地址如下,故得出上面的写法
三、得到一个指向以该IO口地址的结构体的指针变量
以下把GPIO转化为了一个指针(方法是把相应的地址强制类型转化)(GPIOA为指针)
如何更好的配置寄存器
STM32给我们把每种的寄存器功能的配置转化为了一个个宏定义,让人一目了然。
GPIO工作模式设置(已定义好,直接用其名字即可)
为了达到见名知意的效果,各寄存器的每一种配置功能的二进制形式都转化为了一个符号常量。
为了方便配置每个io端口,把相应功能组合起来,构成一个结构体。完成此结构体的赋值,再调用相应的函数把这些值写入对应的寄存器,即可完成io端口的配置。
该结构体即是IO口的功能配置结构体,可实现IO口的某一个引脚的速度、工作模式的配置。
(配置的方法可使用上面定义好的宏常量)
好的程序写法
枚举可以使一些对象的取值只限定在一定的范围内,减少出错,而且更直观。
注意下面的写法,可以使数字更直观,而且清晰易懂,例如1左移31位即第31位为1。
具体例子例如这个使用左右移方式十分的方便且清晰:
(*volatile unsigned long)0x40010C00 =(2<<20) | (0<<22); // 为简单起见,不管其他位了
*(volatile unsigned long *)0x40010C0C =1<<5;
(还可利用上面的方式,把5,20利用宏定义转化为更清晰的字符)
一些简写的写法
RCC_APB2ENR:RCC 是时钟寄存器 , APB2 是外设2 ,ENR可以理解为 enable
GPIOB_CRL:GPIO Bcontrol 控制寄存器
GPIOB_ODR:GPIO(general purpose input output) Boutput data register 输出数据寄存器
位的经典处理方法:
对寄存器的配置采用读、修改、写方式
STM32的库有许多好的思路,学习的时候可以把这些总结下来,多思考,多学习,这样才能慢慢提高。
上一篇:STM32之寄存器访问
下一篇:STM32 寄存器点灯介绍
推荐阅读
史海拾趣
在电子产品行业,产品质量和客户服务是企业生存和发展的关键。Barnbrook深知这一点,因此在发展过程中始终坚持严格的品质管理和优质的客户服务。公司建立了完善的质量管理体系,对每一道工序都进行严格把关,确保产品的稳定性和可靠性。同时,Barnbrook也重视客户反馈和需求,不断优化产品和服务,赢得了客户的信任和好评。
Fastron公司非常重视与客户的合作关系。公司始终坚持以客户为中心的服务理念,为客户提供优质的产品和服务。Fastron不仅关注客户的需求和反馈,还积极与客户沟通合作,共同推动产品的升级和优化。这种紧密的合作关系使得Fastron与客户之间建立了长期稳定的信任关系,为公司的持续发展提供了有力保障。
随着全球化进程的加速推进,Apx-Crystal公司意识到拓展国际市场的重要性。公司制定了详细的国际化战略,通过参加国际展览、设立海外分支机构、与当地企业建立战略合作关系等方式,积极开拓海外市场。凭借优质的产品和服务,Apx-Crystal逐渐赢得了国际客户的信任和认可,产品远销欧美、亚太等多个地区,实现了从国内市场向国际市场的跨越式发展。
1996年,ECT为了进一步壮大在产业中的主导地位,加入了Dover集团。Dover集团是一家在纽约股票交易所上市的全美500强大企业之一,其业务涵盖工业、工程系统、流体、电子技术等多个领域。加入Dover集团后,ECT得到了更多的资源和支持,实现了跨越式发展。Dover集团的全球布局和丰富资源,为ECT在全球范围内的业务拓展提供了有力保障。
AIM公司深知质量是企业的生命线。因此,公司始终将质量管理放在首位,建立了严格的质量控制体系。从原材料采购到产品出厂,每一个环节都经过严格把关,确保产品的质量稳定和可靠。同时,AIM还注重品牌建设,通过提供优质的产品和服务,树立了良好的品牌形象和口碑。
随着全球化进程的加速和国际贸易的不断发展,Hendon Semiconductors积极实施全球化战略,不断拓展国际市场。公司加强与国际客户的合作与交流,了解他们的需求和期望,并根据市场变化调整产品结构和市场策略。同时,Hendon Semiconductors还积极参与国际展会和技术交流活动,展示其最新的技术和产品成果,提升品牌知名度和影响力。通过一系列有效的市场拓展措施和全球化战略的实施,Hendon Semiconductors在国际市场上取得了显著的成绩和突破。
降低成本 ADI发布WiMAX终端RF收发器 美国模拟器件公司(Analog Devices, Inc.,纽约证券交易所代码: ADI),全球领先的高性能信号处理解决方案供应商,10月10~12日在美国波士顿WiMAX世界峰会上展示了两款用于全 ...… 查看全部问答∨ |
大约从20世纪80年代起,就有许多业内专家宣称模拟电路已走进死胡同,而数字应用将在电子世界中大放异彩,包括用在通信上的集成电路(integrated circuits,ICs)。在现实中,当然,现代化的通信系统同时需要将模拟及数字功能复杂地融合在一起。 ...… 查看全部问答∨ |
初涉足高频电路,按照网络上铺天盖地得电路图设计制作了多个300MHZ的放大电路,调试结果,不管是9018还是3355等三极管,信号根本没有放大反而衰减了,在电源上的信号也输出信号大。我百思不得其解,请高手为我指点迷津。… 查看全部问答∨ |
|
小弟最近在忙毕业设计,想做一个基于51单片机的电脑遥控器,想法是这样的,做一个类似U盘的红外接收端,能实现遥控关机的功能就行了。这是最基本的,至于开机,貌似通过USB接口实现开机是有难度的。所以只想做一个能实现关机功能的就差不多了,我查 ...… 查看全部问答∨ |
|
430的单片机之前只是耳闻,还没用过,我51,EMC单片机会用,还有ARM9,ARM11会用。 现在要用这430还需要哪些工具和软件?? [ 本帖最后由 青叶漂零 于 2011-11-16 11:35 编辑 ]… 查看全部问答∨ |
南华大学黄智伟 备战2013 有关 “高频无线电类”赛题的一些问题 本帖最后由 paulhyde 于 2014-9-15 03:07 编辑 南华大学黄智伟 备战2013 有关 “高频无线电类”赛题的一些问题 … 查看全部问答∨ |
Xilinx PCIe Endpoint Master DMA设计实现 基于PCI Express的数据采集卡 PCIe数据采集卡 PCI Express数据采集卡 本人在北京工作6年以上,从事FPGA外围接口设计,非常熟悉PCI Express协议,设计调试了多个基于PCI Express接口的数据采集卡. 本人非常熟悉Virtex-5/Virtex-6/7 Series FPGA PCI ...… 查看全部问答∨ |