历史上的今天
返回首页

历史上的今天

今天是:2025年04月23日(星期三)

正在发生

2020年04月23日 | STM32:简单位带操作

2020-04-23 来源:eefocus

STM32


1.说在前面


1.最近刚刚在学stm32,第一个问题就是配置文件(HARDWARE)的问题,在HARDWARE中只存储着.c文件,然而以前因为不正确的设置方式,虽然代码逻辑没错但是还是跑不出来,所以,一定要使用标准的配置方式


2.位带操作


1.以前使用51的时候,设置高低电平的时候只要给相应的引脚设置1或0就可以配置高低电平,对于32而言,要不使用设置库函数,要不直接对寄存器进行操作,但是,通过位带操作,也可以实现相对简单的操作;


2.原理:


在stm32中对一个引脚进行设置是不存在的,但是可以把一个位膨胀成为32位的地址,然后对地址进行相应的操作;


位带区:想操作的相应io口内存所在区


位带别名区:内存所在区膨胀后的地址(位带区和位带别名区: 1 : 32)


#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2)) 

#define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr)) 

#define BIT_ADDR(addr, bitnum)   MEM_ADDR(BITBAND(addr, bitnum)) 

//IO¿ÚµØÖ·Ó³Éä

#define GPIOA_ODR_Addr    (GPIOA_BASE+12) //0x4001080C 

#define GPIOB_ODR_Addr    (GPIOB_BASE+12) //0x40010C0C 

#define GPIOC_ODR_Addr    (GPIOC_BASE+12) //0x4001100C 

#define GPIOD_ODR_Addr    (GPIOD_BASE+12) //0x4001140C 

#define GPIOE_ODR_Addr    (GPIOE_BASE+12) //0x4001180C 

#define GPIOF_ODR_Addr    (GPIOF_BASE+12) //0x40011A0C    

#define GPIOG_ODR_Addr    (GPIOG_BASE+12) //0x40011E0C    

 

#define GPIOA_IDR_Addr    (GPIOA_BASE+8) //0x40010808 

#define GPIOB_IDR_Addr    (GPIOB_BASE+8) //0x40010C08 

#define GPIOC_IDR_Addr    (GPIOC_BASE+8) //0x40011008 

#define GPIOD_IDR_Addr    (GPIOD_BASE+8) //0x40011408 

#define GPIOE_IDR_Addr    (GPIOE_BASE+8) //0x40011808 

#define GPIOF_IDR_Addr    (GPIOF_BASE+8) //0x40011A08 

#define GPIOG_IDR_Addr    (GPIOG_BASE+8) //0x40011E08 

 

//IO¿Ú²Ù×÷,Ö»¶Ôµ¥Ò»µÄIO¿Ú!

//È·±£nµÄֵСÓÚ16!

#define PAout(n)   BIT_ADDR(GPIOA_ODR_Addr,n)  

#define PAin(n)    BIT_ADDR(GPIOA_IDR_Addr,n)  

 

#define PBout(n)   BIT_ADDR(GPIOB_ODR_Addr,n)  

#define PBin(n)    BIT_ADDR(GPIOB_IDR_Addr,n) 

 

#define PCout(n)   BIT_ADDR(GPIOC_ODR_Addr,n)  

#define PCin(n)    BIT_ADDR(GPIOC_IDR_Addr,n)  

 

#define PDout(n)   BIT_ADDR(GPIOD_ODR_Addr,n)  

#define PDin(n)    BIT_ADDR(GPIOD_IDR_Addr,n)  

 

#define PEout(n)   BIT_ADDR(GPIOE_ODR_Addr,n)  

#define PEin(n)    BIT_ADDR(GPIOE_IDR_Addr,n)  

 

#define PFout(n)   BIT_ADDR(GPIOF_ODR_Addr,n)  

#define PFin(n)    BIT_ADDR(GPIOF_IDR_Addr,n)  

#define PGout(n)   BIT_ADDR(GPIOG_ODR_Addr,n)  

#define PGin(n)    BIT_ADDR(GPIOG_IDR_Addr,n)  

 

 

void WFI_SET(void);

void INTX_DISABLE(void);

void INTX_ENABLE(void);

void MSR_MSP(u32 addr);

 

#endif

3.简单使用


#include "stm32f10x.h"

#include "delay.h"//contain the sys.h

#include "LED.H"

 

void main()

{

delay_init();//init

LED_init();//init

while(1)

{

PAout(8)=1;//higher

delay_ms(500);//delay the dark

PAout(8)=0;//lower

delay_ms(500);//delay the dark

PDout(2)=1;//higher

delay_ms(500);//delay the dark

PDout(2)=0;//lower

delay_ms(500);//delay the light

}

}

推荐阅读

史海拾趣

Abracon公司的发展小趣事

Abracon是一家全球领先的电子元器件制造商,提供高性能、高质量的频率和时间解决方案。以下是该公司发展的五个相关故事:

  1. 公司成立和早期发展: Abracon成立于1992年,总部位于美国德克萨斯州奥斯汀。公司最初专注于石英晶体和石英晶体振荡器的生产,为电子行业提供频率控制器件。在早期发展阶段,Abracon注重产品质量和技术创新,赢得了客户的信任和支持。

  2. 产品多样化和市场拓展: 随着市场需求的变化和技术进步,Abracon逐渐扩展了产品线,涵盖了晶振、振荡器、射频滤波器、电感器、磁性元件等多个品类。公司的产品被广泛应用于通信、计算机、消费电子、汽车电子等各种领域,拓展了市场份额。

  3. 全球化战略和国际扩张: Abracon通过建立全球销售和分销网络,加强了在国际市场的影响力。公司在美国、亚洲、欧洲等地设立了办事处和生产基地,为客户提供更便捷的服务和支持。Abracon还与全球各地的合作伙伴建立了紧密的合作关系,共同推动产品销售和技术支持。

  4. 持续创新和研发投入: Abracon不断投入研发,并致力于技术创新和产品升级。公司与学术机构和行业领先企业合作,共同开发新产品和解决方案,满足客户不断变化的需求。Abracon还积极参与行业标准制定和技术规范的制定,为行业发展贡献力量。

  5. 未来展望和发展方向: Abracon将继续致力于提供高性能、高可靠性的电子元器件,满足客户在频率和时间解决方案方面的需求。公司将加强在新兴领域的研发投入,如物联网(IoT)、5G通信、汽车电子等,推动技术创新和产品应用,为客户提供更多元化的解决方案。同时,Abracon还将继续拓展国际市场,加强与客户和合作伙伴的合作,实现共同发展。

Compostar Technology Co Ltd公司的发展小趣事

人才是企业发展的核心。Compostar Technology Co Ltd深知这一点,因此一直注重人才培养和团队建设。公司建立了完善的人才培训体系,为员工提供了广阔的职业发展空间。同时,公司还积极营造良好的企业文化氛围,激发员工的创新精神和团队合作精神。这些举措使得公司拥有一支高素质、高效率的员工队伍,为公司的持续发展提供了有力保障。

Heidenhain Corp公司的发展小趣事

随着智能制造的兴起,海德汉公司积极转型为智能制造解决方案提供商。该公司与多家电子企业合作,共同探索智能制造的新模式和新路径。通过集成海德汉的数控系统、自动化设备和智能管理软件,这些企业成功构建了高效、灵活、智能的生产体系。海德汉的智能制造解决方案不仅提高了生产效率和产品质量,还降低了生产成本和能耗,为电子行业的可持续发展做出了积极贡献。

HiRel Connectors Inc公司的发展小趣事
每个摄像头单独使用电源适配器供电,适用于小规模或分散安装的摄像头系统。
BRIGHT公司的发展小趣事

BRIGHT公司的历史可以追溯到1985年,由一群热爱音乐的年轻人和电子工程师共同创立。在1987年,他们成功推出了全球第一支无线耳机,这一创新产品迅速在市场上获得了巨大的成功。这一成就的背后,是创始人在一次偶然中被家里的电线绊倒后产生的灵感。他意识到,将有线耳机转变为无线耳机将带来巨大的便利和舒适体验。这一创新不仅改变了耳机行业的格局,也为BRIGHT公司奠定了坚实的基础。

CET Technology公司的发展小趣事

在数字化转型的大背景下,CET Technology积极探索数字孪生技术在园区管理中的应用。公司提供的数字孪生与3D可视化服务,通过创建园区的虚拟实体,模拟、验证、预测和控制园区的运营状态,帮助园区实现智慧化管理、优化服务和提高生产效率。此外,CET的数字孪生服务还能监控园区内人员和车辆的通行情况,提升园区内部的交通效率,为园区的可持续发展提供了有力支持。

问答坊 | AI 解惑

嵌入式,累死你没商量

 做了一段时间嵌入式,发现自己憔悴了很多   又研究硬件,看电路图,DATASHEET,又要搞代码,方案公司的代码长的不得了,有时候真想一头装死,还是舍不得。。。   真的太累啊[ …

查看全部问答>

恩智浦微控制器LPC2478 ARM7应用讨论

恩智浦微控制器LPC2478和LPC2470支持需高速通信的LCD应用 恩智浦半导体发布其全新的LPC2478微控制器,这是业界唯一的提供集成的LCD支持的基于闪存的ARM7 MCU。同时推出的LPC2470是其无闪存版本。全新的微控制器配有双路ARM高速总线,可实现多种高带 ...…

查看全部问答>

如何打开ARM实时时钟计数器

请问ARM9中如何打开实时时钟计数器,我初始化了TICNT了,但是如何让他运行起来 我初始化过程 rRTCOON=0x0; rTICNT=(127&0x7f)|0x80; TICNT寄存器不会走,要如何让他走起来…

查看全部问答>

在哪能买到室外被动红外探测器的防爆罩?红外在加油站工作有危险吗?

大家都知道,加油站是禁止打手机的,那么红外是否也会引起同样的危险呢? 谢谢!…

查看全部问答>

能一眼看出来这是什么吗

猜猜看,这是什么?         这个带有法拉利标志的头盔,实际上是一款咖啡机。将头盔的护目镜打开,就可以看到隐藏在其中的咖啡操作台。为了起到更好的装饰作用和隐蔽效果,咖啡机的操作按钮都隐藏在滑片之后。您可以将它 ...…

查看全部问答>

问:windows和dos下如何获得dosfs文件系统的U盘,,,在线求救!

问:windows和dos下如何获得dosfs文件系统的U盘,,,在线求救!…

查看全部问答>

ucos中如何规划定时采样任务?

ucos中如何规划定时采样任务?当采样频率要求很高时,任务是放在中断函数中吗,中断函数的写法和裸机的中断函数有区别吗?…

查看全部问答>

launchpad欢乐学习季

MSP挑战级(高级)78分,有没有机会获得铁电开发板呢? …

查看全部问答>

出IC/开发板/工具/屏,有免费东西送!

1.    LATTICE CPLD ISPLSI 2064VE全新,5元一片,共160PCS   全要包邮! 半小时前 上传 下载附件 (178 KB) 半小时前 上传 下载附件 (171.75 KB) 2.  GPS LEA-4H-Q-000   送一条天线转接线 ...…

查看全部问答>