历史上的今天

今天是:2024年08月26日(星期一)

正在发生

2018年08月26日 | STM32库内程序一些好的编程思路、方法及好的程序

发布者:CreativeMind 关键字:STM32  库内程序  编程思路 手机看文章 扫描二维码
随时随地手机看文章

下面这些是在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库内程序一些好的编程思路、方法及好的程序

上一篇:STM32之寄存器访问
下一篇:STM32 寄存器点灯介绍

推荐阅读

“苏州罗伯特木牛流马”,这家虽然在AGV行业只有2年的新锐企业,他的创始人王平及核心团队成员却在过去近二十年的职业生涯,以及未来的事业规划中,坚持只做了一件事:工业车辆的开发。如今,木牛流马的成长,仍然是延续着工业车辆的智能化和无人化开发,这样的坚持和专注,如同一股清流,格外引人关注。图:苏州罗伯特木牛流马物流技术有限公司创始人及执...
上一篇从雅各布职业发展的角度展现了移动芯片巨头高通的创立,在Linkabit得到的宝贵财富和经验给予了雅各布博士长远的目光。毅然扎进CDMA技术上,并想方设法的去大力推广。这一篇讲述了CDMA横空出世的艰难历程以及早就高通今日辉煌的几个业务主要特点。高通既开创了一种技术,又借助此技术优势从一个技术作坊跻身为世界500强。 蜂窝兴隆,CDMA步履艰难 在...
一台服务器、一台电脑、一台手机最重要的电子零部件是什么?没错,就是CPU处理器。它主要负责数据计算、控制功能,是最核心的部分。不过你又知道有多少种CPU架构吗?主流的X86、ARM到底有什么区别?下面就给大家介绍一下几种常见的CPU架构:X861978年6月8日,Intel发布了史诗级的CPU处理器8086,由此X86架构传奇正式拉开帷幕。首次为8086引入X86作为计算机...
记录一下STM32的ADC编程方法!前面已经学习了DMA,知道如何使用DMA去减小CPU的负担,这里的ADC转换也来使用DMA---这个也是STM32的ADC转换最常见的方式。---第一步是---了解STM32的ADC对应的GPIO口----如下图---不用记住,可以查询,我是将它剪下来粘贴到书本的相应章节----!---第二步是---配置相应ADC转换的GPIO口----这里使用PC0--PC1static void ADC1...

史海拾趣

问答坊 | AI 解惑

降低成本 ADI发布WiMAX终端RF收发器

降低成本 ADI发布WiMAX终端RF收发器         美国模拟器件公司(Analog Devices, Inc.,纽约证券交易所代码: ADI),全球领先的高性能信号处理解决方案供应商,10月10~12日在美国波士顿WiMAX世界峰会上展示了两款用于全 ...…

查看全部问答∨

模拟设计与验证工具现状(1)

大约从20世纪80年代起,就有许多业内专家宣称模拟电路已走进死胡同,而数字应用将在电子世界中大放异彩,包括用在通信上的集成电路(integrated circuits,ICs)。在现实中,当然,现代化的通信系统同时需要将模拟及数字功能复杂地融合在一起。   ...…

查看全部问答∨

为什么高频电路就这么难做

初涉足高频电路,按照网络上铺天盖地得电路图设计制作了多个300MHZ的放大电路,调试结果,不管是9018还是3355等三极管,信号根本没有放大反而衰减了,在电源上的信号也输出信号大。我百思不得其解,请高手为我指点迷津。…

查看全部问答∨

proteul问题

出现下列问题,一直不知道是什么意思 SIMULATION LOG ============== Design:   E:\\C51实例\\MCS-51 examples_67 EEPROM\\EEPROM.DSN Doc. no.: <NONE> Revision: <NONE> Author:   <NONE> Created:  ...…

查看全部问答∨

如何做一个基于51单片机的电脑遥控器?

小弟最近在忙毕业设计,想做一个基于51单片机的电脑遥控器,想法是这样的,做一个类似U盘的红外接收端,能实现遥控关机的功能就行了。这是最基本的,至于开机,貌似通过USB接口实现开机是有难度的。所以只想做一个能实现关机功能的就差不多了,我查 ...…

查看全部问答∨

求RF4CE源码

TI网站上没找到。。。跪求。。…

查看全部问答∨

申请TI的片子来了,怎么用大家给个意见吧

  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 ...…

查看全部问答∨

全副sensor武装起来的自动小车

自动小车可以作为一个简易的探测机器人来使用。对于有些危险场合的信息收集很有意义,低成本和易用性是产品市场化的关键。…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved