DSP 2812: 使用C++封装CPU级别的操作

关于2812的CPU核,应用程序可操作的内容比较少,主要是中断控制的功能。

事实上CPU级别的中断数量比较少,应用使用时基本是使用PIE模块来扩展使用的。

我们将CPU级别的操作单独封装称为一个类,提供了一些全局的封装接口。

这些接口,很多的时候,是由初始化相关外设寄存器时调用的。


使用命名空间对类进行隔离。

namespace NF281x{

/**
 * CPU类实现了对CPU级别的操作的封装
 */
class CCpu{

};

}

提供CPU级别的汇编操作的封装:

	/**
	 * 使能全局中断
	 */
	static inline void eint(){
		asm(" clrc INTM");
	}

	/**
	 * 禁用全局中断
	 */
	static inline void dint(){
		asm(" setc INTM");
	}

	/**
	 * 使能全局实时中断
	 * 一般在eint()之后调用
	 */
	static inline void ertm(){
		asm(" clrc DBGM");
	}

	/**
	 * 禁用全局实时中断
	 * 本函数一般不使用
	 */
	static inline void drtm(){
		asm(" setc DBGM");
	}

	static inline void eallow(){
		asm(" EALLOW");
	}

	static inline void edis(){
		asm(" EDIS");
	}

提供一般地系统初始化时清理中断及标志的接口:

	/**
	 * 清除所有的中断使能
	 */
	void clrIER();

	/**
	 * 清除所有的中断标志
	 */
	void clrIFR();

提供一些CPU级别中断的操作及简化调用的封装:

	/**
	 * 中断是否被使能
	 * @param x 中断号,0~11:INT1~INT12
	 * @return
	 */
	bool isIntEabled( const int& x )const;

	/**
	 * 使能中断
	 * @param x
	 */
	void enableInt( const int& x );

	/**
	 * 禁用中断
	 * @param x
	 */
	void disableInt( const int& x );

	inline void enableInt1(){
		enableInt(0);
	}

	inline void enableInt2(){
		enableInt(1);
	}

	inline void enableInt3(){
		enableInt(2);
	}

	inline void enableInt4(){
		enableInt(3);
	}

	inline void enableInt5(){
		enableInt(4);
	}

	inline void enableInt6(){
		enableInt(5);
	}

	inline void enableInt7(){
		enableInt(6);
	}

	inline void enableInt8(){
		enableInt(7);
	}

	inline void enableInt9(){
		enableInt(8);
	}

	inline void enableInt10(){
		enableInt(9);
	}

	inline void enableInt11(){
		enableInt(10);
	}

	inline void enableInt12(){
		enableInt(11);
	}

注意:

使用面向对象设计程序时,往往是对对象本身进行抽象。

设计时并不管当前实际项目中会使用哪些接口,而是考虑对象可以或者应该提供什么样的功能给别人使用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值