打印

基于寄存器的位带实现

[复制链接]
808|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zeshoufx|  楼主 | 2019-10-22 10:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、位带
#define GPIOA 0x40010800
#define GPIOB 0x40010c00
#define GPIOC 0x40011000
#define GPIOD 0x40011400
#define GPIOE 0x40011800
#define GPIOF 0x40011c00
#define GPIOG 0x40012000


二、程序
typedef int  s32;
typedef short s16;
typedef char  s8;

typedef const int sc32;  /*!< Read Only */
typedef const short sc16;  /*!< Read Only */
typedef const char sc8;   /*!< Read Only */

typedef volatile int  vs32;
typedef volatile short   vs16;
typedef volatile char  vs8;

typedef const volatile int vsc32;  /*!< Read Only */
typedef const volatile short vsc16;  /*!< Read Only */
typedef const volatile char vsc8;   /*!< Read Only */

typedef unsigned int  u32;
typedef unsigned short u16;
typedef unsigned char  u8;

typedef const unsigned int uc32;  /*!< Read Only */
typedef const unsigned short uc16;  /*!< Read Only */
typedef const unsigned char uc8;   /*!< Read Only */

typedef volatile unsigned int  vu32;
typedef volatile unsigned short vu16;
typedef volatile unsigned char  vu8;

typedef const volatile unsigned int vuc32;  /*!< Read Only */
typedef const volatile unsigned short vuc16;  /*!< Read Only */
typedef const volatile unsigned char vuc8;   /*!< Read Only */


#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))


三、增强效率
void Enhanced_c_e_e(void)
{
         *(unsigned int*)0x4002103C|=0x00000080;
}
四、附件

3-bitband.zip

70.66 KB

位带

使用特权

评论回复
沙发
qcliu| | 2019-11-12 15:19 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
板凳
tfqi| | 2019-11-12 15:41 | 只看该作者

非常感谢楼主分享

使用特权

评论回复
地板
wiba| | 2019-11-12 15:58 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
5
zeshoufx|  楼主 | 2019-11-15 11:24 | 只看该作者
wiba 发表于 2019-11-12 15:58
非常感谢楼主分享

相互学习,,共同进步

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

67

主题

1980

帖子

15

粉丝