历史上的今天
返回首页

历史上的今天

今天是:2024年09月30日(星期一)

正在发生

2021年09月30日 | STM32F103固件库编程(2)—位带操作

2021-09-30 来源:eefocus

与51单片机对比

STM32F103的位带操作相当于51单片机的sbit。因为STM32F103每次操作都是4个字节(32位),所以我们要把一个位变成32位,其中膨胀后的最后一位就是原来的位。

这样之后,通过赋值0或1,就能控制最后一位(即原来的位)。


STM32F103的位带区

在这里插入图片描述

位带区和位带别名区地址转换

一个位膨胀成四个字节,这样便于STM32以4个字节的方式操作。


1.外设位带别名区地址

所在字节的地址为 A,位序号为 n(0<=n<=7)

AliasAddr= =0x42000000+ ((A-0x40000000)x8+n)*4


其中 (A-0x40000000)代表着地址偏移,(A-0x40000000)*8之后代表着位偏移,最后,一个地址里有8位,((A-0x40000000)x8+n)代表着总的位偏移,一个位要膨胀成四个字节,最后位偏移要×4代表着地址偏移的数。


2.SRAM位带别名区地址

所在字节的地址为 A,位序号为 n(0<=n<=7)

AliasAddr= =0x22000000+ (A-0x20000000)x8x4 +n*4


分析同上


3.统一公式

((addr & 0xF0000000)+0x02000000+((addr & 0x00FFFFFF)<<5)+(bitnum<<2))

统一公式就是给计算机理解用的,记住公式就行,上述分析已经让你知道了位带是怎么实现的,如果想具体了解这个公式,可以自行百度了解。


所以C语言的宏实现如下:


#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x02000000+((addr&0x00FFFFFF)<<5)+(bitnum<<2)) 


举个例子:(控制GPIOC第二个IO口)

在这里插入图片描述

找到GPIOC的基地址:0x4001 1000

GPIOC_ODR的地址: 0x4001100C(基地址+地址偏移)

我们要控制第二个IO口,所以bitnum数值为2


#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x02000000+((addr&0x00FFFFFF)<<5)+(bitnum<<2)) 


BIATAND(0x4001100C,2) //为位带别名区的地址

地址强制转化成指针,

赋值1表示最后一位为1,原来的位是1,GPIOC第二个IO口输出高电平

赋值0表示最后一位为0,原来的位是0,GPIOC第二个IO口输出低电平

推荐阅读

史海拾趣

Cobham Semiconductor Solutions公司的发展小趣事

品质是Cobham Semiconductor Solutions的生命线。公司始终坚持严格的质量管理体系,从原材料采购到生产流程,再到产品出厂,每一个环节都经过严格把控。公司还引入了先进的生产设备和技术,确保产品质量的稳定性和可靠性。这种对品质的执着追求,使得Cobham的产品在市场上赢得了良好的声誉和口碑。

Alpha (Taiwan)公司的发展小趣事

随着数字化时代的到来,Alpha (Taiwan)公司紧跟时代步伐,积极推动数字化转型。公司引进先进的数字化设备和技术,对生产线进行智能化改造,提高了生产效率和产品质量。同时,公司还加强了对大数据、云计算等技术的应用,实现了对市场需求、客户反馈等信息的实时分析和处理。这些数字化转型的举措,不仅提升了公司的竞争力,也为公司的未来发展奠定了坚实的基础。

请注意,这些故事是基于一般情况和行业趋势构建的,并非Alpha (Taiwan)公司的实际经历。要了解Alpha (Taiwan)公司的真实发展故事,建议查阅相关公司的官方资料、新闻报道或行业分析报告。

Eagle-Picher公司的发展小趣事

Eagle-Picher公司的历史可以追溯到1843年,最初是由Edgar和他的兄弟Stephen J. Conkling在俄亥俄州辛辛那提成立的,专注于生产商业涂料颜料。随着时间的推移,公司经历了多次转型和变革。1847年,Stephen离开公司后,Edgar引入了新的合伙人威廉·伍德,并更名为康克林木业公司。随后,公司在不同的业务领域内扩展,直到1922年,Eagle-Picher正式进入电池市场,开始了其电子行业的历程。

磁联达(CND-tek)公司的发展小趣事

随着5G技术的快速发展,磁联达(CND-tek)公司意识到无线充电技术将成为未来的重要趋势。公司投入大量资源进行无线充电发射线圈的研发,经过多次试验和改进,终于成功推出了一款性能稳定、效率高的无线充电产品。这一创新不仅为公司带来了丰厚的利润,也进一步巩固了公司在行业内的领先地位。

Hongfa公司的发展小趣事

宏发公司在发展过程中,积极实施国际化战略。2003年,宏发成立了欧洲公司,加快了国际化进程。随后,公司又在美国等地设立了分支机构,建立了本土化营销及服务网络。通过国际市场的拓展,宏发不仅提升了品牌知名度和影响力,还获得了更多的市场机会和客户资源。如今,宏发的产品已畅销全球多个国家和地区,成为了继电器行业的领军企业。

Flambeau公司的发展小趣事

面对数字化时代的挑战和机遇,Flambeau公司积极推进数字化转型和智能化升级。公司引入先进的数字化管理系统和智能制造技术,实现了生产过程的自动化、智能化和可视化。通过大数据分析和人工智能技术,公司能够更准确地预测市场需求、优化生产计划、提高生产效率和质量。同时,Flambeau还积极探索物联网、区块链等新技术在电子包装领域的应用潜力,为客户提供更加智能、便捷的包装解决方案。

需要注意的是,以上五个故事是基于电子行业一般发展路径和Flambeau公司可能经历的发展阶段的构想。由于具体信息有限,这些故事可能与Flambeau公司的实际情况存在一定差异。

问答坊 | AI 解惑

【招聘】EDA Software Engineer / Senior EDA Software Engineer

本人就职的公司正在招聘员工,期待您的加入。 北京普拉普斯微电子技术有限公司 公司介绍:         ProPlusDesign Solutions, Inc., headquartered in San Jose, California, USA, isa leading technology and se ...…

查看全部问答>

请教联想输入法问题?

在做用于wince平台下的输入法,现在拼音输入法已实现,不过只能一个一个汉字输入,码表是16进制的形式表示,两个字节(ASCII码)表示一个汉字(或符号)现在想实现拼音联想功能,至少能实现词组输入,还没啥头绪??请教各位!分没啦,不好意思啊!…

查看全部问答>

89c51的PCON寄存器的问题

其中存在IDL位空闲位,还有PD掉电工作位,单片机的功率不高吧?在何时会用到省电模式呢?还有空闲工作方式下振荡器仍工作,所以只需要复位只需要两个机器周期。那么通常情况下复位需要几个机器周期。 SMOD波特率倍增在串行通信时经常被怎样使用?…

查看全部问答>

通信类软件包括哪些?

比如飞信是的吧? 做这行需要哪些软硬件知识呢?比如用不同语言开发要用到哪些函数、控件、API等,要知道哪些底层协议,对各类硬件接口要有哪些撑握?除PC外还有哪些外围东东要学习? 希望有经验的大侠指导下我这个门还未入的菜鸟。。。 谢谢!…

查看全部问答>

关于ce5自带的webserver的问题

我想把webserver的主目录\\www转移到NandFlash上,先是修改servers.dat,如下: ; @CESYSGEN IF SERVERS_MODULES_HTTPD root:-Directory(\"\\NandFlash\\Windows\"):-Directory(\"www\") Directory(\"\\NandFlash\\Windows\\www\"):-Directory(\ ...…

查看全部问答>

请教芯片c语言问题

最近可以说是加入了嵌入式开发的行列, 但在看一些c的程序时发现一些奇怪的语句, 比如, bit P80                                = 0xffffffbf.0; bit&nb ...…

查看全部问答>

WaitCommEvent在串口程序中的应用问题

我在应用中是只对EV_RXCHAR事件 WaitCommEvent这个函数主要是接收到数据的时候触发事件,进行下面的读取函数,如果没有数据接收,就会阻塞。 一开始用这个函数没有问题,但是调用两次后,也就是第三次调用这个函数,就算是没有数据接收到,也不会 ...…

查看全部问答>

LED恒流驱动与不同控制模式的比较

市场上可以买到的微功率电源芯片有以下几种控制模式:   PFM、PWM、chargepump、FPWM、PFM/PWM以及pulse-skipPWM、digitalPWM   其中常见的有PFM、PWM、chargepump以及PFM/PWM   1、PFM是通过调节脉冲频率(即开关管的工作频率)的方法 ...…

查看全部问答>

过程性连续赋值语句

verilog中若一个过程块里面有多个过程性连续赋值语句(如多个assign语句),请问这些语句是顺序执行的吗? 求高手指点!…

查看全部问答>

斗胆开贴,MSP430疑难杂症都跟帖吧,共同学习。

斗胆开贴,MSP430疑难杂症都跟帖吧,共同学习。…

查看全部问答>