微控制器寄存器访问与启动代码详解
1. 微控制器寄存器的位映射结构
在微控制器编程中,常常使用带有位域的 C 风格结构体来表示寄存器中的位或位组,这有助于创建与硬件寄存器位完全匹配的位映射结构。
1.1 位映射结构体示例
以一个 8 位端口寄存器为例,可以用如下 C 风格的位映射结构体来表示:
typedef struct struct_bit8_type
{
std::uint8_t b0 : 1;
std::uint8_t b1 : 1;
std::uint8_t b2 : 1;
std::uint8_t b3 : 1;
std::uint8_t b4 : 1;
std::uint8_t b5 : 1;
std::uint8_t b6 : 1;
std::uint8_t b7 : 1;
} bit8_type;
使用 bit8_type
结构体很简单,例如将 portb.5
置为高电平:
reinterpret_cast<volatile bit8_type*>(mcal::reg::portb)->b5 = 1U;
1.2 联合的使用
还可以方便地将内置整数类型与位映射寄存器结构组合在 C 风格的联合中。例如: