S3C44B0X开发技巧

[复制链接]
4176|11
 楼主| mon51 发表于 2007-10-6 09:25 | 显示全部楼层 |阅读模式
KEIL下是不支持S3C44B0X的开发的。现在许多人还是用ADS1.2。在开发时,会发现,查看内部寄存器的值,是非常麻烦的。现在告诉大家一个简单而且方便的方法:<br />1:唾弃三星源码定义。<br />2:全部采用数据结构定义。<br />三星的源码,如果仔细分析,会发现许多问题。编写的并不精炼!学习者,不应该照葫芦画瓢。<br />ADS1.2中对数据结构的查看是非产简单的。可以当做变量查看。<br />例如:<br />/******************************************************************************/<br />/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />/*&nbsp;&nbsp;CLOCK.H:&nbsp;&nbsp;Header&nbsp;file&nbsp;for&nbsp;Clock&nbsp;&&nbsp;Power&nbsp;Management&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Samsung&nbsp;S3C44B0X&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />/******************************************************************************/<br /><br />#ifndef&nbsp;__CLOCK_H<br />#define&nbsp;__CLOCK_H<br /><br /><br />#define&nbsp;CLK_BASE&nbsp;&nbsp;&nbsp;&nbsp;0x01D80000&nbsp;&nbsp;//&nbsp;Clock&nbsp;&&nbsp;Power&nbsp;Management&nbsp;Base&nbsp;Address<br /><br /><br />//&nbsp;Clock&nbsp;&&nbsp;Power&nbsp;Management&nbsp;Registers<br />typedef&nbsp;struct&nbsp;{<br />&nbsp;&nbsp;reg32&nbsp;PLLCON;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;PLL&nbsp;Control<br />&nbsp;&nbsp;reg32&nbsp;CLKCON;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Clock&nbsp;Control<br />&nbsp;&nbsp;reg32&nbsp;CLKSLOW;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Slow&nbsp;Clock&nbsp;Control<br />&nbsp;&nbsp;reg32&nbsp;LOCKTIME;&nbsp;&nbsp;&nbsp;//&nbsp;PLL&nbsp;Lock&nbsp;Time&nbsp;Counter<br />}&nbsp;regCLK;<br /><br />#define&nbsp;pCLK&nbsp;((regCLK&nbsp;*)CLK_BASE)<br /><br />extern&nbsp;void&nbsp;CLOCK_Set(void);<br /><br />#endif&nbsp;/*&nbsp;__CLOCK_H&nbsp;*/<br />
 楼主| mon51 发表于 2007-10-6 09:26 | 显示全部楼层

ADC

/******************************************************************************/<br />/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />/*&nbsp;&nbsp;ADC.H:&nbsp;&nbsp;Header&nbsp;file&nbsp;for&nbsp;A/D&nbsp;Converter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Samsung&nbsp;S3C44B0X&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />/******************************************************************************/<br /><br />#ifndef&nbsp;__ADC_H<br />#define&nbsp;__ADC_H<br /><br /><br />#define&nbsp;ADC_BASE&nbsp;&nbsp;&nbsp;&nbsp;0x01D40000&nbsp;&nbsp;//&nbsp;A/D&nbsp;Converter&nbsp;Base&nbsp;Address<br /><br /><br />//&nbsp;A/D&nbsp;Converter&nbsp;Registers<br />typedef&nbsp;struct&nbsp;{<br />&nbsp;&nbsp;reg32&nbsp;ADCCON;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;ADC&nbsp;Control<br />&nbsp;&nbsp;reg32&nbsp;ADCPSR;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;ADC&nbsp;Prescaler<br />&nbsp;&nbsp;reg32&nbsp;ADCDAT;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;ADC&nbsp;Data<br />}&nbsp;regADC;<br /><br />#define&nbsp;pADC&nbsp;((regADC&nbsp;*)ADC_BASE)<br /><br /><br />//&nbsp;ADCCON:&nbsp;ADC&nbsp;Control&nbsp;Register<br />#define&nbsp;ENABLE_START&nbsp;&nbsp;&nbsp;&nbsp;0x00000001<br />#define&nbsp;READ_START&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00000002<br />#define&nbsp;INPUT_AIN0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00000000<br />#define&nbsp;INPUT_AIN1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00000004<br />#define&nbsp;INPUT_AIN2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00000008<br />#define&nbsp;INPUT_AIN3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000000C<br />#define&nbsp;INPUT_AIN4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00000010<br />#define&nbsp;INPUT_AIN5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00000014<br />#define&nbsp;INPUT_AIN6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00000018<br />#define&nbsp;INPUT_AIN7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000001C<br />#define&nbsp;ADC_SLEEP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00000020<br />#define&nbsp;ADC_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00000040<br /><br /><br />#endif&nbsp;/*&nbsp;__ADC_H&nbsp;*/<br />
 楼主| mon51 发表于 2007-10-6 09:28 | 显示全部楼层

uart

/******************************************************************************/<br />/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />/*&nbsp;&nbsp;UART.H:&nbsp;&nbsp;Header&nbsp;file&nbsp;for&nbsp;UART&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Samsung&nbsp;S3C44B0X&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />/******************************************************************************/<br /><br />#ifndef&nbsp;__UART_H<br />#define&nbsp;__UART_H<br /><br /><br />#define&nbsp;UART0_BASE&nbsp;&nbsp;0x01D00000&nbsp;&nbsp;//&nbsp;UART0&nbsp;Base&nbsp;Address<br />#define&nbsp;UART1_BASE&nbsp;&nbsp;0x01D04000&nbsp;&nbsp;//&nbsp;UART1&nbsp;Base&nbsp;Address<br /><br /><br />//&nbsp;UART&nbsp;Registers<br />typedef&nbsp;struct&nbsp;{<br />&nbsp;&nbsp;reg32&nbsp;ULCON;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;UART&nbsp;Line&nbsp;Control<br />&nbsp;&nbsp;reg32&nbsp;UCON;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;UART&nbsp;Control<br />&nbsp;&nbsp;reg32&nbsp;UFCON;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;UART&nbsp;FIFO&nbsp;Control<br />&nbsp;&nbsp;reg32&nbsp;UMCON;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;UART&nbsp;MODEM&nbsp;Control<br />&nbsp;&nbsp;reg32&nbsp;UTRSTAT;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;UART&nbsp;Tx/Rx&nbsp;Status<br />&nbsp;&nbsp;reg32&nbsp;UERSTAT;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;UART&nbsp;Error&nbsp;Status<br />&nbsp;&nbsp;reg32&nbsp;UFSTAT;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;UART&nbsp;FIFO&nbsp;Status<br />&nbsp;&nbsp;reg32&nbsp;UMSTAT;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;UART&nbsp;MODEM&nbsp;Status<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;UTXH;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;UART&nbsp;Tx&nbsp;Hold<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;pad0[3];<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;URXH;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;UART&nbsp;RX&nbsp;Buffer<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;pad1[3];<br />&nbsp;&nbsp;reg32&nbsp;UBRDIV;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;UART&nbsp;Baud&nbsp;Rate&nbsp;Divisor<br />}&nbsp;regUART;<br /><br />#define&nbsp;pUART0&nbsp;((regUART&nbsp;*)UART0_BASE)<br />#define&nbsp;pUART1&nbsp;((regUART&nbsp;*)UART1_BASE)<br /><br /><br />//&nbsp;ULCON:&nbsp;UART&nbsp;Line&nbsp;Control&nbsp;Register<br />#define&nbsp;DATA_5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00<br />#define&nbsp;DATA_6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x01<br />#define&nbsp;DATA_7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x02<br />#define&nbsp;DATA_8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x03<br />#define&nbsp;STOP_ONE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00<br />#define&nbsp;STOP_TWO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x04<br />#define&nbsp;PARITY_NONE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00<br />#define&nbsp;PARITY_ODD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x20<br />#define&nbsp;PARITY_EVEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x28<br />#define&nbsp;PARITY_FC1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x30<br />#define&nbsp;PARITY_FC0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x38<br />#define&nbsp;NORMAL_MODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00<br />#define&nbsp;IRDA_MODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x40<br /><br />//&nbsp;UCON:&nbsp;UART&nbsp;Control&nbsp;Register<br />#define&nbsp;RXM_INTPOL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0001<br />#define&nbsp;RXM_BDMA0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0002&nbsp;&nbsp;//&nbsp;UART0&nbsp;Only<br />#define&nbsp;RXM_BDMA1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0003&nbsp;&nbsp;//&nbsp;UART1&nbsp;Only<br />#define&nbsp;TXM_INTPOL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0004<br />#define&nbsp;TXM_BDMA0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0008&nbsp;&nbsp;//&nbsp;UART0&nbsp;Only<br />#define&nbsp;TXM_BDMA1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x000C&nbsp;&nbsp;//&nbsp;UART1&nbsp;Only<br />#define&nbsp;SEND_BREAK_SIG&nbsp;&nbsp;0x0010<br />#define&nbsp;LOOPBACK_MODE&nbsp;&nbsp;&nbsp;0x0020<br />#define&nbsp;RXINT_ERRSTAT&nbsp;&nbsp;&nbsp;0x0040<br />#define&nbsp;RX_TIMEOUT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0080<br />#define&nbsp;RXINTTYP_LEVEL&nbsp;&nbsp;0x0100<br />#define&nbsp;TXINTTYP_LEVEL&nbsp;&nbsp;0x0200<br /><br />//&nbsp;UFCON:&nbsp;UART&nbsp;FIFO&nbsp;Control&nbsp;Register<br />#define&nbsp;FIFO_EN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x01<br />#define&nbsp;RXF_RST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x02<br />#define&nbsp;TXF_RST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x04<br />#define&nbsp;RXF_TRIG4B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00<br />#define&nbsp;RXF_TRIG8B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x10<br />#define&nbsp;RXF_TRIG12B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x20<br />#define&nbsp;RXF_TRIG16B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x30<br />#define&nbsp;TXF_TRIG4B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x40<br />#define&nbsp;TXF_TRIG8B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x80<br />#define&nbsp;TXF_TRIG12B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xC0<br /><br />//&nbsp;UMCON:&nbsp;UART&nbsp;MODEM&nbsp;Control&nbsp;Register<br />#define&nbsp;RTS_ACTIVE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x01<br />#define&nbsp;AFC_EN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x10<br /><br />//&nbsp;UTRSTAT:&nbsp;UART&nbsp;Tx/Rx&nbsp;Status&nbsp;Register<br />#define&nbsp;RX_BUF_READY&nbsp;&nbsp;&nbsp;&nbsp;0x01<br />#define&nbsp;TX_BUF_EMPTY&nbsp;&nbsp;&nbsp;&nbsp;0x02<br />#define&nbsp;TX_EMPTY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x04<br /><br />//&nbsp;UERSTAT:&nbsp;UART&nbsp;Error&nbsp;Status&nbsp;Register<br />#define&nbsp;OVERRUN_ERR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x01<br />#define&nbsp;PARITY_ERR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x02<br />#define&nbsp;FRAME_ERR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x04<br />#define&nbsp;BREAK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x08<br /><br />//&nbsp;UFSTAT:&nbsp;UART&nbsp;FIFO&nbsp;Status&nbsp;Register<br />#define&nbsp;RXF_SHIFT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br />#define&nbsp;TXF_SHIFT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4<br />#define&nbsp;RXF_CMASK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x000F<br />#define&nbsp;TXF_CMASK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00F0<br />#define&nbsp;RXF_FULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0100<br />#define&nbsp;TXF_FULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0200<br /><br />//&nbsp;UMSTAT:&nbsp;UART&nbsp;MODEM&nbsp;Status&nbsp;Register<br />#define&nbsp;CTS_ACTIVE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x01&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;CTS&nbsp;Pin&nbsp;is&nbsp;Low<br />#define&nbsp;CTS_CHANGED&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x10<br />//******************************************************************************<br />extern&nbsp;regUART&nbsp;*UART_Get(unsigned&nbsp;char&nbsp;com);<br />extern&nbsp;void&nbsp;UART_Printf(unsigned&nbsp;char&nbsp;com,char&nbsp;*fmt,...);<br />extern&nbsp;void&nbsp;UART_FIFO_Get_Buf(unsigned&nbsp;char&nbsp;com,unsigned&nbsp;char&nbsp;*pBuf,unsigned&nbsp;int&nbsp;Long);<br />extern&nbsp;void&nbsp;UART_FIFO_Send_Buf(unsigned&nbsp;char&nbsp;com,unsigned&nbsp;char&nbsp;*pBuf,unsigned&nbsp;int&nbsp;Long);<br />extern&nbsp;void&nbsp;UART_Send_Buf(unsigned&nbsp;char&nbsp;com,unsigned&nbsp;char&nbsp;*p,unsigned&nbsp;int&nbsp;Long);<br />extern&nbsp;void&nbsp;UART_Get_Buf(unsigned&nbsp;char&nbsp;com,unsigned&nbsp;char&nbsp;*p,unsigned&nbsp;int&nbsp;Long);<br />extern&nbsp;void&nbsp;UART_Send_Byte&nbsp;(unsigned&nbsp;char&nbsp;com,unsigned&nbsp;char&nbsp;Dat);<br />extern&nbsp;unsigned&nbsp;char&nbsp;UART_Get_Byte&nbsp;(unsigned&nbsp;char&nbsp;com);<br />extern&nbsp;void&nbsp;UART_Init(unsigned&nbsp;char&nbsp;com,unsigned&nbsp;int&nbsp;BPS);<br />#endif&nbsp;/*&nbsp;__UART_H&nbsp;*/<br />
 楼主| mon51 发表于 2007-10-6 09:31 | 显示全部楼层

RTC(更多的定义,请发邮件!)

/******************************************************************************/<br />/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />/*&nbsp;&nbsp;RTC.H:&nbsp;&nbsp;Header&nbsp;file&nbsp;for&nbsp;Real&nbsp;Time&nbsp;Clock&nbsp;(RTC)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Samsung&nbsp;S3C44B0X&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />/******************************************************************************/<br /><br />#ifndef&nbsp;__RTC_H<br />#define&nbsp;__RTC_H<br /><br /><br />#define&nbsp;RTC_BASE&nbsp;&nbsp;&nbsp;&nbsp;0x01D70040&nbsp;&nbsp;//&nbsp;Real&nbsp;Time&nbsp;Clock&nbsp;Base&nbsp;Address<br /><br /><br />//&nbsp;Real&nbsp;Time&nbsp;Clock&nbsp;Registers<br />typedef&nbsp;struct&nbsp;{<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;RTCCON;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;RTC&nbsp;Control<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;pad0[15];<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;RTCALM;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;RTC&nbsp;Alarm<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;pad1[3];<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;ALMSEC;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Alarm&nbsp;Second<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;pad2[3];<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;ALMMIN;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Alarm&nbsp;Minute<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;pad3[3];<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;ALMHOUR;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Alarm&nbsp;Hour<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;pad4[3];<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;ALMDAY;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Alarm&nbsp;Day<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;pad5[3];<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;ALMMON;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Alarm&nbsp;Month<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;pad6[3];<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;ALMYEAR;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Alarm&nbsp;Year<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;pad7[3];<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;RTCRST;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;RTC&nbsp;Round&nbsp;Reset<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;pad8[3];<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;BCDSEC;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;BCD&nbsp;Second<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;pad9[3];<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;BCDMIN;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;BCD&nbsp;Minute<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;padA[3];<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;BCDHOUR;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;BCD&nbsp;Hour<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;padB[3];<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;BCDDAY;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;BCD&nbsp;Day<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;padC[3];<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;BCDDATE;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;BCD&nbsp;Date<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;padD[3];<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;BCDMON;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;BCD&nbsp;Month<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;padE[3];<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;BCDYEAR;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;BCD&nbsp;Year<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;padF[3];<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;TICINT;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Tick&nbsp;Time&nbsp;Count<br />&nbsp;&nbsp;reg8&nbsp;&nbsp;padG[3];<br />}&nbsp;regRTC;<br /><br />欢迎到:http://auction1.taobao.com/auction/0/item_detail-0db2-14a681ee629ab3ceee2dfa1dce58b19c.jhtml<br />提供S3C44B0X的开发资料和芯片!<br /><br />
computer00 发表于 2007-10-6 11:02 | 显示全部楼层

彻底倒塌,谁说keil不支持44B0的开发了?

看看我以前搞的:<br /><br /><a href="https://bbs.21ic.com/club/bbs/list.asp?boardid=35&t=2496814&tp=%u5F7B%u5E95%u5012%u584C%u4E86%7E%7E%7Ekeil%u7684CARM%u7F16%u8BD1%u5668%u597D%u8C61%u4E0D%u80FD%u8BBE%u7F6E%u751F%u6210%u76F8%u5BF9%u8DF3%u8F6C%u4EE3%u7801%uFF1F" target=_blank>https://bbs.21ic.com/club/bbs/list.asp?boardid=35&t=2496814&tp=%u5F7B%u5E95%u5012%u584C%u4E86%7E%7E%7Ekeil%u7684CARM%u7F16%u8BD1%u5668%u597D%u8C61%u4E0D%u80FD%u8BBE%u7F6E%u751F%u6210%u76F8%u5BF9%u8DF3%u8F6C%u4EE3%u7801%uFF1F</a><br /><br />S3C44B0&nbsp;BIOS的keil&nbsp;CARM版
xieqin 发表于 2007-10-6 16:24 | 显示全部楼层

你这个方法是从keil那里学来的吧

MDK安装目录ARMINCSamsungS3C44B0X目录就有这些头文件.
shgeng2005 发表于 2007-10-19 11:36 | 显示全部楼层

这种结构蛮好的

这种结构蛮好的,可是在实际应用中怎么来调用呢?我现在要编个程序,用UART0接收数据然后用6位数码管将数据实时地显示出来,用这样的结构怎么做呀?!
computer00 发表于 2007-10-19 12:32 | 显示全部楼层

就是结构体调用啊

  
shgeng2005 发表于 2007-10-19 13:07 | 显示全部楼层

结构体。

哦。谢谢<br />struct&nbsp;前面的typedef是什么意思,结构定义的时候要加上这个吗?说上怎么没有这个说明呀?<br />
computer00 发表于 2007-10-19 13:25 | 显示全部楼层

那样就定义了一个类型,下面可以用它做强制类型转换

#define&nbsp;pCLK&nbsp;((regCLK&nbsp;*)CLK_BASE)<br /><br />这样就得到了一个pCLK的指针,使用时,直接用pCLK.<br /><br />pCLK-&gtPLLCON&nbsp;=&nbsp;xxx;<br /><br />或者<br /><br />(*pCLK).PLLCON&nbsp;=&nbsp;xxx;
shgeng2005 发表于 2007-10-19 14:44 | 显示全部楼层

computer00

太感谢您的解释了,虽然我没有理解透,但至少我懂得他的用法了,谢谢您!
1527820835 发表于 2013-7-19 15:55 | 显示全部楼层
了解了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

121

主题

472

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部