STM32F103的寄存器操作时,为什么没有用位定义
答案:2 悬赏:0 手机版
解决时间 2021-02-05 20:51
- 提问者网友:绫月
- 2021-02-04 21:09
STM32F103的寄存器操作时,为什么没有用位定义
最佳答案
- 五星知识达人网友:白昼之月
- 2021-02-04 21:48
把寄存器定义为结构体,寄存器里的位都是“位域”,例如:
typedef struct {
uint8_t enable : 1;
uint8_t tick_int : 1;
uint8_t clk_source: 1;
uint16_t : 13;
uint8_t count_flag : 1;
} Systick_Ctrl;
然后定义该寄存器的指针:
#define SYSTICK_CTRL ((Systick_Ctrl*) 0xe000e010)
在程序中访问时这样:
typedef struct {
uint8_t enable : 1;
uint8_t tick_int : 1;
uint8_t clk_source: 1;
uint16_t : 13;
uint8_t count_flag : 1;
} Systick_Ctrl;
然后定义该寄存器的指针:
#define SYSTICK_CTRL ((Systick_Ctrl*) 0xe000e010)
在程序中访问时这样:
全部回答
- 1楼网友:青灯有味
- 2021-02-04 22:51
rcc_cfgr寄存器的第15、14位表示的是adc预分频,上式是将这两位清0,对于这两位有如下表述:
00:pclk2 2分频后作为adc时钟
01:pclk2 4分频后作为adc时钟
10:pclk2 6分频后作为adc时钟
11:pclk2 8分频后作为adc时钟
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯