微控制器寄存器访问与启动代码实现
在微控制器编程中,寄存器访问和启动代码的实现是至关重要的环节。下面我们将详细探讨这两方面的内容。
1. 微控制器寄存器访问
1.1 通用模板的寄存器访问
我们可以基于之前的 reg_set() 子例程,为 reg_access_static 添加更多功能,如逻辑和位操作。以下是添加逻辑或操作的示例代码:
// chapter07_03-001_register_access.cpp
template<typename addr_type,
typename reg_type,
const addr_type addr,
const reg_type val>
struct reg_access_static
{
static void reg_set()
{
*reinterpret_cast<volatile reg_type*>(addr) = val;
}
static void reg_or()
{
*reinterpret_cast<volatile reg_type*>(addr) |= val;
}
};
reg_or() 函数与 reg_set() 函数类似,区别在于使用逻辑或操作符而非赋值操作符。例如,将 portb.5 置为 1 的代码如下:
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



