打印

小弟刚入手STM32,想问问各位32怎么直接操纵寄存器写程序

[复制链接]
1762|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yuanquanquan|  楼主 | 2013-10-25 20:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
因为前段时间用STM8的缘故,所以玩32写程序想直接不用库函数算了,但是没找到一个程序模板,问一下哪位写过这样的程序,分享一下,简简单单能用就好。
沙发
huzi2099| | 2013-10-25 20:18 | 只看该作者
库函数有源码,照抄

使用特权

评论回复
板凳
weifengdq| | 2013-10-26 00:18 | 只看该作者
可以搜一下“正点原子” 他一直用的都是寄存器 可以去开源电子网看一下 全部开源

使用特权

评论回复
地板
yuanquanquan|  楼主 | 2013-10-27 12:57 | 只看该作者
huzi2099 发表于 2013-10-25 20:18
库函数有源码,照抄

3Q

使用特权

评论回复
5
yuanquanquan|  楼主 | 2013-10-27 12:58 | 只看该作者
weifengdq 发表于 2013-10-26 00:18
可以搜一下“正点原子” 他一直用的都是寄存器 可以去开源电子网看一下 全部开源 ...

3Q

使用特权

评论回复
6
zdx818| | 2013-10-28 13:47 | 只看该作者
送一个给你:

//方法应该有人发过,我只是总结一下
//-----------------------------------------------------------------------------------------------------
//别名区    ADDRESS=0x4200 0000 + (0x0001 100C*0x20) + (bitx*4) ;bitx:第x位
// 把“位段地址+位序号”转换别名地址宏
#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)  )
#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 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 PA0   BIT_ADDR(GPIOA_ODR_Addr, 0)  //输出
#define PA1   BIT_ADDR(GPIOA_ODR_Addr, 1)  //输出
#define PA2   BIT_ADDR(GPIOA_ODR_Addr, 2)  //输出
#define PA3   BIT_ADDR(GPIOA_ODR_Addr, 3)  //输出
#define PA4   BIT_ADDR(GPIOA_ODR_Addr, 4)  //输出
#define PA5   BIT_ADDR(GPIOA_ODR_Addr, 5)  //输出
#define PA6   BIT_ADDR(GPIOA_ODR_Addr, 6)  //输出
#define PA7   BIT_ADDR(GPIOA_ODR_Addr, 7)  //输出
#define PA8   BIT_ADDR(GPIOA_ODR_Addr, 8)  //输出
#define PA9   BIT_ADDR(GPIOA_ODR_Addr, 9)  //输出
#define PA10  BIT_ADDR(GPIOA_ODR_Addr, 10) //输出
#define PA11  BIT_ADDR(GPIOA_ODR_Addr, 11) //输出
#define PA12  BIT_ADDR(GPIOA_ODR_Addr, 12) //输出
#define PA13  BIT_ADDR(GPIOA_ODR_Addr, 13) //输出
#define PA14  BIT_ADDR(GPIOA_ODR_Addr, 14) //输出
#define PA15  BIT_ADDR(GPIOA_ODR_Addr, 15) //输出
#define PA0in   BIT_ADDR(GPIOA_IDR_Addr, 0)  //输入
#define PA1in   BIT_ADDR(GPIOA_IDR_Addr, 1)  //输入
#define PA2in   BIT_ADDR(GPIOA_IDR_Addr, 2)  //输入
#define PA3in   BIT_ADDR(GPIOA_IDR_Addr, 3)  //输入
#define PA4in   BIT_ADDR(GPIOA_IDR_Addr, 4)  //输入
#define PA5in   BIT_ADDR(GPIOA_IDR_Addr, 5)  //输入
#define PA6in   BIT_ADDR(GPIOA_IDR_Addr, 6)  //输入
#define PA7in   BIT_ADDR(GPIOA_IDR_Addr, 7)  //输入
#define PA8in   BIT_ADDR(GPIOA_IDR_Addr, 8)  //输入
#define PA9in   BIT_ADDR(GPIOA_IDR_Addr, 9)  //输入
#define PA10in  BIT_ADDR(GPIOA_IDR_Addr, 10) //输入
#define PA11in  BIT_ADDR(GPIOA_IDR_Addr, 11) //输入
#define PA12in  BIT_ADDR(GPIOA_IDR_Addr, 12) //输入
#define PA13in  BIT_ADDR(GPIOA_IDR_Addr, 13) //输入
#define PA14in  BIT_ADDR(GPIOA_IDR_Addr, 14) //输入
#define PA15in  BIT_ADDR(GPIOA_IDR_Addr, 15) //输入
//-----------------------------------------------------
#define PB0   BIT_ADDR(GPIOB_ODR_Addr, 0)  //输出
#define PB1   BIT_ADDR(GPIOB_ODR_Addr, 1)  //输出
#define PB2   BIT_ADDR(GPIOB_ODR_Addr, 2)  //输出
#define PB3   BIT_ADDR(GPIOB_ODR_Addr, 3)  //输出
#define PB4   BIT_ADDR(GPIOB_ODR_Addr, 4)  //输出
#define PB5   BIT_ADDR(GPIOB_ODR_Addr, 5)  //输出
#define PB6   BIT_ADDR(GPIOB_ODR_Addr, 6)  //输出
#define PB7   BIT_ADDR(GPIOB_ODR_Addr, 7)  //输出
#define PB8   BIT_ADDR(GPIOB_ODR_Addr, 8)  //输出
#define PB9   BIT_ADDR(GPIOB_ODR_Addr, 9)  //输出
#define PB10  BIT_ADDR(GPIOB_ODR_Addr, 10) //输出
#define PB11  BIT_ADDR(GPIOB_ODR_Addr, 11) //输出
#define PB12  BIT_ADDR(GPIOB_ODR_Addr, 12) //输出
#define PB13  BIT_ADDR(GPIOB_ODR_Addr, 13) //输出
#define PB14  BIT_ADDR(GPIOB_ODR_Addr, 14) //输出
#define PB15  BIT_ADDR(GPIOB_ODR_Addr, 15) //输出
#define PB0in   BIT_ADDR(GPIOB_IDR_Addr, 0)  //输入
#define PB1in   BIT_ADDR(GPIOB_IDR_Addr, 1)  //输入
#define PB2in   BIT_ADDR(GPIOB_IDR_Addr, 2)  //输入
#define PB3in   BIT_ADDR(GPIOB_IDR_Addr, 3)  //输入
#define PB4in   BIT_ADDR(GPIOB_IDR_Addr, 4)  //输入
#define PB5in   BIT_ADDR(GPIOB_IDR_Addr, 5)  //输入
#define PB6in   BIT_ADDR(GPIOB_IDR_Addr, 6)  //输入
#define PB7in   BIT_ADDR(GPIOB_IDR_Addr, 7)  //输入
#define PB8in   BIT_ADDR(GPIOB_IDR_Addr, 8)  //输入
#define PB9in   BIT_ADDR(GPIOB_IDR_Addr, 9)  //输入
#define PB10in  BIT_ADDR(GPIOB_IDR_Addr, 10) //输入
#define PB11in  BIT_ADDR(GPIOB_IDR_Addr, 11) //输入
#define PB12in  BIT_ADDR(GPIOB_IDR_Addr, 12) //输入
#define PB13in  BIT_ADDR(GPIOB_IDR_Addr, 13) //输入
#define PB14in  BIT_ADDR(GPIOB_IDR_Addr, 14) //输入
#define PB15in  BIT_ADDR(GPIOB_IDR_Addr, 15) //输入
//-----------------------------------------------------
#define PC0   BIT_ADDR(GPIOC_ODR_Addr, 0)  //输出
#define PC1   BIT_ADDR(GPIOC_ODR_Addr, 1)  //输出
#define PC2   BIT_ADDR(GPIOC_ODR_Addr, 2)  //输出
#define PC3   BIT_ADDR(GPIOC_ODR_Addr, 3)  //输出
#define PC4   BIT_ADDR(GPIOC_ODR_Addr, 4)  //输出
#define PC5   BIT_ADDR(GPIOC_ODR_Addr, 5)  //输出
#define PC6   BIT_ADDR(GPIOC_ODR_Addr, 6)  //输出
#define PC7   BIT_ADDR(GPIOC_ODR_Addr, 7)  //输出
#define PC8   BIT_ADDR(GPIOC_ODR_Addr, 8)  //输出
#define PC9   BIT_ADDR(GPIOC_ODR_Addr, 9)  //输出
#define PC10  BIT_ADDR(GPIOC_ODR_Addr, 10) //输出
#define PC11  BIT_ADDR(GPIOC_ODR_Addr, 11) //输出
#define PC12  BIT_ADDR(GPIOC_ODR_Addr, 12) //输出
#define PC13  BIT_ADDR(GPIOC_ODR_Addr, 13) //输出
#define PC14  BIT_ADDR(GPIOC_ODR_Addr, 14) //输出
#define PC15  BIT_ADDR(GPIOC_ODR_Addr, 15) //输出
#define PC0in   BIT_ADDR(GPIOC_IDR_Addr, 0)  //输入
#define PC1in   BIT_ADDR(GPIOC_IDR_Addr, 1)  //输入
#define PC2in   BIT_ADDR(GPIOC_IDR_Addr, 2)  //输入
#define PC3in   BIT_ADDR(GPIOC_IDR_Addr, 3)  //输入
#define PC4in   BIT_ADDR(GPIOC_IDR_Addr, 4)  //输入
#define PC5in   BIT_ADDR(GPIOC_IDR_Addr, 5)  //输入
#define PC6in   BIT_ADDR(GPIOC_IDR_Addr, 6)  //输入
#define PC7in   BIT_ADDR(GPIOC_IDR_Addr, 7)  //输入
#define PC8in   BIT_ADDR(GPIOC_IDR_Addr, 8)  //输入
#define PC9in   BIT_ADDR(GPIOC_IDR_Addr, 9)  //输入
#define PC10in  BIT_ADDR(GPIOC_IDR_Addr, 10) //输入
#define PC11in  BIT_ADDR(GPIOC_IDR_Addr, 11) //输入
#define PC12in  BIT_ADDR(GPIOC_IDR_Addr, 12) //输入
#define PC13in  BIT_ADDR(GPIOC_IDR_Addr, 13) //输入
#define PC14in  BIT_ADDR(GPIOC_IDR_Addr, 14) //输入
#define PC15in  BIT_ADDR(GPIOC_IDR_Addr, 15) //输入
//-----------------------------------------------------
#define PD0   BIT_ADDR(GPIOD_ODR_Addr, 0)  //输出
#define PD1   BIT_ADDR(GPIOD_ODR_Addr, 1)  //输出
#define PD2   BIT_ADDR(GPIOD_ODR_Addr, 2)  //输出
#define PD3   BIT_ADDR(GPIOD_ODR_Addr, 3)  //输出
#define PD4   BIT_ADDR(GPIOD_ODR_Addr, 4)  //输出
#define PD5   BIT_ADDR(GPIOD_ODR_Addr, 5)  //输出
#define PD6   BIT_ADDR(GPIOD_ODR_Addr, 6)  //输出
#define PD7   BIT_ADDR(GPIOD_ODR_Addr, 7)  //输出
#define PD8   BIT_ADDR(GPIOD_ODR_Addr, 8)  //输出
#define PD9   BIT_ADDR(GPIOD_ODR_Addr, 9)  //输出
#define PD10  BIT_ADDR(GPIOD_ODR_Addr, 10) //输出
#define PD11  BIT_ADDR(GPIOD_ODR_Addr, 11) //输出
#define PD12  BIT_ADDR(GPIOD_ODR_Addr, 12) //输出
#define PD13  BIT_ADDR(GPIOD_ODR_Addr, 13) //输出
#define PD14  BIT_ADDR(GPIOD_ODR_Addr, 14) //输出
#define PD15  BIT_ADDR(GPIOD_ODR_Addr, 15) //输出
#define PD0in   BIT_ADDR(GPIOD_IDR_Addr, 0)  //输入
#define PD1in   BIT_ADDR(GPIOD_IDR_Addr, 1)  //输入
#define PD2in   BIT_ADDR(GPIOD_IDR_Addr, 2)  //输入
#define PD3in   BIT_ADDR(GPIOD_IDR_Addr, 3)  //输入
#define PD4in   BIT_ADDR(GPIOD_IDR_Addr, 4)  //输入
#define PD5in   BIT_ADDR(GPIOD_IDR_Addr, 5)  //输入
#define PD6in   BIT_ADDR(GPIOD_IDR_Addr, 6)  //输入
#define PD7in   BIT_ADDR(GPIOD_IDR_Addr, 7)  //输入
#define PD8in   BIT_ADDR(GPIOD_IDR_Addr, 8)  //输入
#define PD9in   BIT_ADDR(GPIOD_IDR_Addr, 9)  //输入
#define PD10in  BIT_ADDR(GPIOD_IDR_Addr, 10) //输入
#define PD11in  BIT_ADDR(GPIOD_IDR_Addr, 11) //输入
#define PD12in  BIT_ADDR(GPIOD_IDR_Addr, 12) //输入
#define PD13in  BIT_ADDR(GPIOD_IDR_Addr, 13) //输入
#define PD14in  BIT_ADDR(GPIOD_IDR_Addr, 14) //输入
#define PD15in  BIT_ADDR(GPIOD_IDR_Addr, 15) //输入
//-----------------------------------------------------
#define PE0   BIT_ADDR(GPIOE_ODR_Addr, 0)  //输出
#define PE1   BIT_ADDR(GPIOE_ODR_Addr, 1)  //输出
#define PE2   BIT_ADDR(GPIOE_ODR_Addr, 2)  //输出
#define PE3   BIT_ADDR(GPIOE_ODR_Addr, 3)  //输出
#define PE4   BIT_ADDR(GPIOE_ODR_Addr, 4)  //输出
#define PE5   BIT_ADDR(GPIOE_ODR_Addr, 5)  //输出
#define PE6   BIT_ADDR(GPIOE_ODR_Addr, 6)  //输出
#define PE7   BIT_ADDR(GPIOE_ODR_Addr, 7)  //输出
#define PE8   BIT_ADDR(GPIOE_ODR_Addr, 8)  //输出
#define PE9   BIT_ADDR(GPIOE_ODR_Addr, 9)  //输出
#define PE10  BIT_ADDR(GPIOE_ODR_Addr, 10) //输出
#define PE11  BIT_ADDR(GPIOE_ODR_Addr, 11) //输出
#define PE12  BIT_ADDR(GPIOE_ODR_Addr, 12) //输出
#define PE13  BIT_ADDR(GPIOE_ODR_Addr, 13) //输出
#define PE14  BIT_ADDR(GPIOE_ODR_Addr, 14) //输出
#define PE15  BIT_ADDR(GPIOE_ODR_Addr, 15) //输出
#define PE0in   BIT_ADDR(GPIOE_IDR_Addr, 0)  //输入
#define PE1in   BIT_ADDR(GPIOE_IDR_Addr, 1)  //输入
#define PE2in   BIT_ADDR(GPIOE_IDR_Addr, 2)  //输入
#define PE3in   BIT_ADDR(GPIOE_IDR_Addr, 3)  //输入
#define PE4in   BIT_ADDR(GPIOE_IDR_Addr, 4)  //输入
#define PE5in   BIT_ADDR(GPIOE_IDR_Addr, 5)  //输入
#define PE6in   BIT_ADDR(GPIOE_IDR_Addr, 6)  //输入
#define PE7in   BIT_ADDR(GPIOE_IDR_Addr, 7)  //输入
#define PE8in   BIT_ADDR(GPIOE_IDR_Addr, 8)  //输入
#define PE9in   BIT_ADDR(GPIOE_IDR_Addr, 9)  //输入
#define PE10in  BIT_ADDR(GPIOE_IDR_Addr, 10) //输入
#define PE11in  BIT_ADDR(GPIOE_IDR_Addr, 11) //输入
#define PE12in  BIT_ADDR(GPIOE_IDR_Addr, 12) //输入
#define PE13in  BIT_ADDR(GPIOE_IDR_Addr, 13) //输入
#define PE14in  BIT_ADDR(GPIOE_IDR_Addr, 14) //输入
#define PE15in  BIT_ADDR(GPIOE_IDR_Addr, 15) //输入

//举例:
//输入
if(PB0==0)
//   ;//检测到低电平
//输出
PA0=0;
PA1=1;

使用特权

评论回复
7
yuanquanquan|  楼主 | 2013-11-5 18:46 | 只看该作者
zdx818 发表于 2013-10-28 13:47
送一个给你:

//方法应该有人发过,我只是总结一下

十分感谢

使用特权

评论回复
8
puchuang| | 2013-11-5 20:55 | 只看该作者
直接调用库函数看看  楼主   

使用特权

评论回复
9
puchuang| | 2013-11-5 20:55 | 只看该作者
这样直接    同时可靠   而且  开发周期短

使用特权

评论回复
10
yuanquanquan|  楼主 | 2013-11-9 20:00 | 只看该作者
puchuang 发表于 2013-11-5 20:55
这样直接    同时可靠   而且  开发周期短

恩  谢谢  最近在研究

使用特权

评论回复
11
jasongu| | 2013-11-11 14:15 | 只看该作者
需要技术支持可以联系我!

使用特权

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

本版积分规则

7

主题

78

帖子

1

粉丝