⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ops.h

📁 mips cpu 君正4730 4740的 ucosii 源码 包括系统 摄像头 网络 文件系统等等测试
💻 H
📖 第 1 页 / 共 5 页
字号:
#ifndef __OPS_H__#define __OPS_H__/*************************************************************************** * MSC ***************************************************************************/#define __msc_start_op() \  ( REG_MSC_STRPCL = MSC_STRPCL_START_OP | MSC_STRPCL_CLOCK_CONTROL_START )#define __msc_set_resto(to) 	( REG_MSC_RESTO = to )#define __msc_set_rdto(to) 	( REG_MSC_RDTO = to )#define __msc_set_cmd(cmd) 	( REG_MSC_CMD = cmd )#define __msc_set_arg(arg) 	( REG_MSC_ARG = arg )#define __msc_set_nob(nob) 	( REG_MSC_NOB = nob )#define __msc_get_nob() 	( REG_MSC_NOB )#define __msc_set_blklen(len) 	( REG_MSC_BLKLEN = len )#define __msc_set_cmdat(cmdat) 	( REG_MSC_CMDAT = cmdat )#define __msc_set_cmdat_ioabort() 	( REG_MSC_CMDAT |= MSC_CMDAT_IO_ABORT )#define __msc_clear_cmdat_ioabort() 	( REG_MSC_CMDAT &= ~MSC_CMDAT_IO_ABORT )#define __msc_set_cmdat_bus_width1() 			\do { 							\	REG_MSC_CMDAT &= ~MSC_CMDAT_BUS_WIDTH_MASK; 	\	REG_MSC_CMDAT |= MSC_CMDAT_BUS_WIDTH_1BIT; 	\} while(0)#define __msc_set_cmdat_bus_width4() 			\do { 							\	REG_MSC_CMDAT &= ~MSC_CMDAT_BUS_WIDTH_MASK; 	\	REG_MSC_CMDAT |= MSC_CMDAT_BUS_WIDTH_4BIT; 	\} while(0)#define __msc_set_cmdat_dma_en() ( REG_MSC_CMDAT |= MSC_CMDAT_DMA_EN )#define __msc_set_cmdat_init() 	( REG_MSC_CMDAT |= MSC_CMDAT_INIT )#define __msc_set_cmdat_busy() 	( REG_MSC_CMDAT |= MSC_CMDAT_BUSY )#define __msc_set_cmdat_stream() ( REG_MSC_CMDAT |= MSC_CMDAT_STREAM_BLOCK )#define __msc_set_cmdat_block() ( REG_MSC_CMDAT &= ~MSC_CMDAT_STREAM_BLOCK )#define __msc_set_cmdat_read() 	( REG_MSC_CMDAT &= ~MSC_CMDAT_WRITE_READ )#define __msc_set_cmdat_write() ( REG_MSC_CMDAT |= MSC_CMDAT_WRITE_READ )#define __msc_set_cmdat_data_en() ( REG_MSC_CMDAT |= MSC_CMDAT_DATA_EN )/* r is MSC_CMDAT_RESPONSE_FORMAT_Rx or MSC_CMDAT_RESPONSE_FORMAT_NONE */#define __msc_set_cmdat_res_format(r) 				\do { 								\	REG_MSC_CMDAT &= ~MSC_CMDAT_RESPONSE_FORMAT_MASK; 	\	REG_MSC_CMDAT |= (r); 					\} while(0)#define __msc_clear_cmdat() \  REG_MSC_CMDAT &= ~( MSC_CMDAT_IO_ABORT | MSC_CMDAT_DMA_EN | MSC_CMDAT_INIT| \  MSC_CMDAT_BUSY | MSC_CMDAT_STREAM_BLOCK | MSC_CMDAT_WRITE_READ | \  MSC_CMDAT_DATA_EN | MSC_CMDAT_RESPONSE_FORMAT_MASK )#define __msc_get_imask() 		( REG_MSC_IMASK )#define __msc_mask_all_intrs() 		( REG_MSC_IMASK = 0xff )#define __msc_unmask_all_intrs() 	( REG_MSC_IMASK = 0x00 )#define __msc_mask_rd() 		( REG_MSC_IMASK |= MSC_IMASK_RXFIFO_RD_REQ )#define __msc_unmask_rd() 		( REG_MSC_IMASK &= ~MSC_IMASK_RXFIFO_RD_REQ )#define __msc_mask_wr() 		( REG_MSC_IMASK |= MSC_IMASK_TXFIFO_WR_REQ )#define __msc_unmask_wr() 		( REG_MSC_IMASK &= ~MSC_IMASK_TXFIFO_WR_REQ )#define __msc_mask_endcmdres() 		( REG_MSC_IMASK |= MSC_IMASK_END_CMD_RES )#define __msc_unmask_endcmdres() 	( REG_MSC_IMASK &= ~MSC_IMASK_END_CMD_RES )#define __msc_mask_datatrandone() 	( REG_MSC_IMASK |= MSC_IMASK_DATA_TRAN_DONE )#define __msc_unmask_datatrandone() 	( REG_MSC_IMASK &= ~MSC_IMASK_DATA_TRAN_DONE )#define __msc_mask_prgdone() 		( REG_MSC_IMASK |= MSC_IMASK_PRG_DONE )#define __msc_unmask_prgdone() 		( REG_MSC_IMASK &= ~MSC_IMASK_PRG_DONE )/* n=0,1,2,3,4,5,6,7 */#define __msc_set_clkrt(n) 	\do { 				\	REG_MSC_CLKRT = n;	\} while(0)#define __msc_get_ireg() 		( REG_MSC_IREG )#define __msc_ireg_rd() 		( REG_MSC_IREG & MSC_IREG_RXFIFO_RD_REQ )#define __msc_ireg_wr() 		( REG_MSC_IREG & MSC_IREG_TXFIFO_WR_REQ )#define __msc_ireg_end_cmd_res() 	( REG_MSC_IREG & MSC_IREG_END_CMD_RES )#define __msc_ireg_data_tran_done() 	( REG_MSC_IREG & MSC_IREG_DATA_TRAN_DONE )#define __msc_ireg_prg_done() 		( REG_MSC_IREG & MSC_IREG_PRG_DONE )#define __msc_ireg_clear_end_cmd_res() 	( REG_MSC_IREG = MSC_IREG_END_CMD_RES )#define __msc_ireg_clear_data_tran_done() ( REG_MSC_IREG = MSC_IREG_DATA_TRAN_DONE )#define __msc_ireg_clear_prg_done() 	( REG_MSC_IREG = MSC_IREG_PRG_DONE )#define __msc_get_stat() 		( REG_MSC_STAT )#define __msc_stat_not_end_cmd_res() 	( (REG_MSC_STAT & MSC_STAT_END_CMD_RES) == 0)#define __msc_stat_crc_err() \  ( REG_MSC_STAT & (MSC_STAT_CRC_RES_ERR | MSC_STAT_CRC_READ_ERROR | MSC_STAT_CRC_WRITE_ERROR_YES) )#define __msc_stat_res_crc_err() 	( REG_MSC_STAT & MSC_STAT_CRC_RES_ERR )#define __msc_stat_rd_crc_err() 	( REG_MSC_STAT & MSC_STAT_CRC_READ_ERROR )#define __msc_stat_wr_crc_err() 	( REG_MSC_STAT & MSC_STAT_CRC_WRITE_ERROR_YES )#define __msc_stat_resto_err() 		( REG_MSC_STAT & MSC_STAT_TIME_OUT_RES )#define __msc_stat_rdto_err() 		( REG_MSC_STAT & MSC_STAT_TIME_OUT_READ )#define __msc_rd_resfifo() 		( REG_MSC_RES )#define __msc_rd_rxfifo()  		( REG_MSC_RXFIFO )#define __msc_wr_txfifo(v)  		( REG_MSC_TXFIFO = v )#define __msc_reset() 						\do { 								\	REG_MSC_STRPCL = MSC_STRPCL_RESET;			\ 	while (REG_MSC_STAT & MSC_STAT_IS_RESETTING);		\} while (0)#define __msc_start_clk() 					\do { 								\	REG_MSC_STRPCL = MSC_STRPCL_CLOCK_CONTROL_START;	\} while (0)#define __msc_stop_clk() 					\do { 								\	REG_MSC_STRPCL = MSC_STRPCL_CLOCK_CONTROL_STOP;	\} while (0)#define MMC_CLK 19169200#define SD_CLK  24576000/* msc_clk should little than pclk and little than clk retrieve from card */#define __msc_calc_clk_divisor(type,dev_clk,msc_clk,lv)		\do {								\	unsigned int rate, pclk, i;				\	pclk = dev_clk;						\	rate = type?SD_CLK:MMC_CLK;				\  	if (msc_clk && msc_clk < pclk)				\    		pclk = msc_clk;					\	i = 0;							\  	while (pclk < rate)					\    	{							\      		i ++;						\      		rate >>= 1;					\    	}							\  	lv = i;							\} while(0)/* divide rate to little than or equal to 400kHz */#define __msc_calc_slow_clk_divisor(type, lv)			\do {								\	unsigned int rate, i;					\	rate = (type?SD_CLK:MMC_CLK)/1000/400;			\	i = 0;							\	while (rate > 0)					\    	{							\      		rate >>= 1;					\      		i ++;						\    	}							\  	lv = i;							\} while(0)/*************************************************************************** * RTC ***************************************************************************/#define __rtc_start()	                ( REG_RTC_RCR |= RTC_RCR_START )#define __rtc_stop()	                ( REG_RTC_RCR &= ~RTC_RCR_START )#define __rtc_enable_alarm()	        ( REG_RTC_RCR |= RTC_RCR_AE )#define __rtc_disable_alarm()	        ( REG_RTC_RCR &= ~RTC_RCR_AE )#define __rtc_enable_alarm_irq()	( REG_RTC_RCR |= RTC_RCR_AIE )#define __rtc_disable_alarm_irq()	( REG_RTC_RCR &= ~RTC_RCR_AIE )#define __rtc_enable_1hz_irq()		( REG_RTC_RCR |= RTC_RCR_HZIE )#define __rtc_disable_1hz_irq()		( REG_RTC_RCR &= ~RTC_RCR_HZIE )#define __rtc_is_alarm_flag()		( REG_RTC_RCR & RTC_RCR_AF )#define __rtc_is_1hz_flag()		( REG_RTC_RCR & RTC_RCR_HZ )#define __rtc_clear_alarm_flag()	( REG_RTC_RCR &= ~RTC_RCR_AF )#define __rtc_clear_1hz_flag()		( REG_RTC_RCR &= ~RTC_RCR_HZ )#define __rtc_set_second(s)	        ( REG_RTC_RSR = (s) )#define __rtc_get_second()	        REG_RTC_RSR#define __rtc_set_alarm(s)	        ( REG_RTC_RSAR = (s) )#define __rtc_get_alarm()	        REG_RTC_RSAR#define __rtc_adjust_1hz(f32k) \  ( REG_RTC_RGR = (REG_RTC_RGR & ~(RTC_REG_DIV_MASK | RTC_RGR_ADJ_MASK)) | f32k | 0 )#define __rtc_lock_1hz()	( REG_RTC_RGR |= RTC_RGR_LOCK )/*************************************************************************** * FIR ***************************************************************************//* enable/disable fir unit */#define __fir_enable()		( REG_FIR_CR1 |= FIR_CR1_FIRUE )#define __fir_disable()		( REG_FIR_CR1 &= ~FIR_CR1_FIRUE )/* enable/disable address comparison */#define __fir_enable_ac()	( REG_FIR_CR1 |= FIR_CR1_ACE )#define __fir_disable_ac()	( REG_FIR_CR1 &= ~FIR_CR1_ACE )/* select frame end mode as underrun or normal */#define __fir_set_eous()	( REG_FIR_CR1 |= FIR_CR1_EOUS )#define __fir_clear_eous()	( REG_FIR_CR1 &= ~FIR_CR1_EOUS )/* enable/disable transmitter idle interrupt */#define __fir_enable_tii()	( REG_FIR_CR1 |= FIR_CR1_TIIE )#define __fir_disable_tii()	( REG_FIR_CR1 &= ~FIR_CR1_TIIE )/* enable/disable transmit FIFO service request interrupt */#define __fir_enable_tfi()	( REG_FIR_CR1 |= FIR_CR1_TFIE )#define __fir_disable_tfi()	( REG_FIR_CR1 &= ~FIR_CR1_TFIE )/* enable/disable receive FIFO service request interrupt */#define __fir_enable_rfi()	( REG_FIR_CR1 |= FIR_CR1_RFIE )#define __fir_disable_rfi()	( REG_FIR_CR1 &= ~FIR_CR1_RFIE )/* enable/disable tx function */#define __fir_tx_enable()	( REG_FIR_CR1 |= FIR_CR1_TXE )#define __fir_tx_disable()	( REG_FIR_CR1 &= ~FIR_CR1_TXE )/* enable/disable rx function */#define __fir_rx_enable()	( REG_FIR_CR1 |= FIR_CR1_RXE )#define __fir_rx_disable()	( REG_FIR_CR1 &= ~FIR_CR1_RXE )/* enable/disable serial infrared interaction pulse (SIP) */#define __fir_enable_sip()	( REG_FIR_CR2 |= FIR_CR2_SIPE )#define __fir_disable_sip()	( REG_FIR_CR2 &= ~FIR_CR2_SIPE )/* un-inverted CRC value is sent out */#define __fir_enable_bcrc()	( REG_FIR_CR2 |= FIR_CR2_BCRC )/* inverted CRC value is sent out */#define __fir_disable_bcrc()	( REG_FIR_CR2 &= ~FIR_CR2_BCRC )/* enable/disable Transmit Frame Length Register */#define __fir_enable_tflr()	( REG_FIR_CR2 |= FIR_CR2_TFLRS )#define __fir_disable_tflr()	( REG_FIR_CR2 &= ~FIR_CR2_TFLRS )/* Preamble is transmitted in idle state */#define __fir_set_iss()	( REG_FIR_CR2 |= FIR_CR2_ISS )/* Abort symbol is transmitted in idle state */#define __fir_clear_iss()	( REG_FIR_CR2 &= ~FIR_CR2_ISS )/* enable/disable loopback mode */#define __fir_enable_loopback()	( REG_FIR_CR2 |= FIR_CR2_LMS )#define __fir_disable_loopback()	( REG_FIR_CR2 &= ~FIR_CR2_LMS )/* select transmit pin polarity */#define __fir_tpp_negative()	( REG_FIR_CR2 |= FIR_CR2_TPPS )#define __fir_tpp_positive()	( REG_FIR_CR2 &= ~FIR_CR2_TPPS )/* select receive pin polarity */#define __fir_rpp_negative()	( REG_FIR_CR2 |= FIR_CR2_RPPS )#define __fir_rpp_positive()	( REG_FIR_CR2 &= ~FIR_CR2_RPPS )/* n=16,32,64,128 */#define __fir_set_txfifo_trigger(n) 		\do { 						\	REG_FIR_CR2 &= ~FIR_CR2_TTRG_MASK;	\	REG_FIR_CR2 |= FIR_CR2_TTRG_##n;	\} while (0)/* n=16,32,64,128 */#define __fir_set_rxfifo_trigger(n) 		\do { 						\	REG_FIR_CR2 &= ~FIR_CR2_RTRG_MASK;	\	REG_FIR_CR2 |= FIR_CR2_RTRG_##n;	\} while (0)/* FIR status checking */#define __fir_test_rfw()	( REG_FIR_SR & FIR_SR_RFW )#define __fir_test_rfa()	( REG_FIR_SR & FIR_SR_RFA )#define __fir_test_tfrtl()	( REG_FIR_SR & FIR_SR_TFRTL )#define __fir_test_rfrtl()	( REG_FIR_SR & FIR_SR_RFRTL )#define __fir_test_urun()	( REG_FIR_SR & FIR_SR_URUN )#define __fir_test_rfte()	( REG_FIR_SR & FIR_SR_RFTE )#define __fir_test_orun()	( REG_FIR_SR & FIR_SR_ORUN )#define __fir_test_crce()	( REG_FIR_SR & FIR_SR_CRCE )#define __fir_test_fend()	( REG_FIR_SR & FIR_SR_FEND )#define __fir_test_tff()	( REG_FIR_SR & FIR_SR_TFF )#define __fir_test_rfe()	( REG_FIR_SR & FIR_SR_RFE )#define __fir_test_tidle()	( REG_FIR_SR & FIR_SR_TIDLE )#define __fir_test_rb()		( REG_FIR_SR & FIR_SR_RB )#define __fir_clear_status()					\do { 								\	REG_FIR_SR |= FIR_SR_RFW | FIR_SR_RFA | FIR_SR_URUN;	\} while (0)#define __fir_clear_rfw()	( REG_FIR_SR |= FIR_SR_RFW )#define __fir_clear_rfa()	( REG_FIR_SR |= FIR_SR_RFA )#define __fir_clear_urun()	( REG_FIR_SR |= FIR_SR_URUN )#define __fir_set_tflr(len)			\do { 						\	REG_FIR_TFLR = len; 			\} while (0)#define __fir_set_addr(a)	( REG_FIR_AR = (a) )#define __fir_write_data(data)	( REG_FIR_TDR = data )#define __fir_read_data(data)	( data = REG_FIR_RDR )/*************************************************************************** * SCC ***************************************************************************/#define __scc_enable(base)	( REG_SCC_CR(base) |= SCC_CR_SCCE )#define __scc_disable(base)	( REG_SCC_CR(base) &= ~SCC_CR_SCCE )#define __scc_set_tx_mode(base)	( REG_SCC_CR(base) |= SCC_CR_TRS )#define __scc_set_rx_mode(base)	( REG_SCC_CR(base) &= ~SCC_CR_TRS )#define __scc_enable_t2r(base)	( REG_SCC_CR(base) |= SCC_CR_T2R )#define __scc_disable_t2r(base)	( REG_SCC_CR(base) &= ~SCC_CR_T2R )#define __scc_clk_as_devclk(base)		\do {						\  REG_SCC_CR(base) &= ~SCC_CR_FDIV_MASK;	\  REG_SCC_CR(base) |= SCC_CR_FDIV_1;		\} while (0)#define __scc_clk_as_half_devclk(base)		\do {						\  REG_SCC_CR(base) &= ~SCC_CR_FDIV_MASK;	\  REG_SCC_CR(base) |= SCC_CR_FDIV_2;		\} while (0)/* n=1,4,8,14 */#define __scc_set_fifo_trigger(base, n)		\do {						\  REG_SCC_CR(base) &= ~SCC_CR_TRIG_MASK;	\  REG_SCC_CR(base) |= SCC_CR_TRIG_##n;		\} while (0)#define __scc_set_protocol(base, p)		\do {						\	if (p)					\	  	REG_SCC_CR(base) |= SCC_CR_TP;	\	else					\	 	REG_SCC_CR(base) &= ~SCC_CR_TP;	\} while (0)#define __scc_flush_fifo(base)	( REG_SCC_CR(base) |= SCC_CR_FLUSH )#define __scc_set_invert_mode(base)	( REG_SCC_CR(base) |= SCC_CR_CONV )#define __scc_set_direct_mode(base)	( REG_SCC_CR(base) &= ~SCC_CR_CONV )#define SCC_ERR_INTRS \    ( SCC_CR_ECIE | SCC_CR_EPIE | SCC_CR_RETIE | SCC_CR_EOIE )#define SCC_ALL_INTRS \    ( SCC_CR_TXIE | SCC_CR_RXIE | SCC_CR_TENDIE | SCC_CR_RTOIE | \      SCC_CR_ECIE | SCC_CR_EPIE | SCC_CR_RETIE | SCC_CR_EOIE )#define __scc_enable_err_intrs(base)	( REG_SCC_CR(base) |= SCC_ERR_INTRS )#define __scc_disable_err_intrs(base)	( REG_SCC_CR(base) &= ~SCC_ERR_INTRS )#define SCC_ALL_ERRORS \    ( SCC_SR_ORER | SCC_SR_RTO | SCC_SR_PER | SCC_SR_RETR_3 | SCC_SR_ECNTO)#define __scc_clear_errors(base)	( REG_SCC_SR(base) &= ~SCC_ALL_ERRORS )#define __scc_enable_all_intrs(base)	( REG_SCC_CR(base) |= SCC_ALL_INTRS )#define __scc_disable_all_intrs(base)	( REG_SCC_CR(base) &= ~SCC_ALL_INTRS )#define __scc_enable_tx_intr(base)	( REG_SCC_CR(base) |= SCC_CR_TXIE | SCC_CR_TENDIE )#define __scc_disable_tx_intr(base)	( REG_SCC_CR(base) &= ~(SCC_CR_TXIE | SCC_CR_TENDIE) )

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -