SPI_Lis3lv02d三轴加速度计程序代码:)~

[复制链接]
 楼主| takeshic 发表于 2008-7-1 22:06 | 显示全部楼层 |阅读模式
//<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPI_Lis3lv02dl&nbsp;:&nbsp;TMS320F2812&nbsp;&nbsp;Teaching&nbsp;CD&nbsp;ROM<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(C)&nbsp;chenwei&nbsp;email&nbsp;chenwei_0218@qq.com<br />//<br />//###########################################################################<br />//<br />//&nbsp;FILE:&nbsp;&nbsp;&nbsp;&nbsp;Lis3lv02dl.c<br />//<br />//&nbsp;TITLE:&nbsp;&nbsp;&nbsp;&nbsp;SPI&nbsp;-&nbsp;Lis3lv02dl&nbsp;<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPU&nbsp;Timer0&nbsp;ISR&nbsp;every&nbsp;50&nbsp;ms<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Watchdog&nbsp;active&nbsp;,&nbsp;served&nbsp;in&nbsp;ISR&nbsp;and&nbsp;main-loop&nbsp;<br />//<br />//###########################################################################<br />//<br />//&nbsp;&nbsp;Ver&nbsp;|&nbsp;dd&nbsp;mmm&nbsp;yyyy&nbsp;|&nbsp;Who&nbsp;&nbsp;|&nbsp;Description&nbsp;of&nbsp;changes<br />//&nbsp;=====|=============|======|===============================================<br />//&nbsp;&nbsp;2.0&nbsp;|&nbsp;11&nbsp;Nov&nbsp;2008&nbsp;|&nbsp;C.W.&nbsp;|&nbsp;adapted&nbsp;to&nbsp;header-files&nbsp;Version&nbsp;1.00&nbsp;&nbsp;<br />//###########################################################################<br /><br />#include&nbsp;&quot;DSP281x_Device.h&quot;<br />#define&nbsp;WHO_AM_I&nbsp;&nbsp;&nbsp;&nbsp;0x0f&nbsp;<br />#define&nbsp;OFFSET_X&nbsp;&nbsp;&nbsp;&nbsp;0x16&nbsp;&nbsp;&nbsp;&nbsp;<br />#define&nbsp;OFFSET_Y&nbsp;&nbsp;&nbsp;&nbsp;0x17&nbsp;<br />#define&nbsp;OFFSET_Z&nbsp;&nbsp;&nbsp;&nbsp;0x18&nbsp;<br />#define&nbsp;GAIN_X&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x19&nbsp;<br />#define&nbsp;GAIN_Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x1a&nbsp;<br />#define&nbsp;GAIN_Z&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x1b&nbsp;<br />#define&nbsp;CTRL_REG1&nbsp;&nbsp;&nbsp;0x20&nbsp;<br />#define&nbsp;CTRL_REG2&nbsp;&nbsp;&nbsp;0x21&nbsp;<br />#define&nbsp;CTRL_REG3&nbsp;&nbsp;&nbsp;0x22&nbsp;<br />#define&nbsp;HP_FILTER_RESET&nbsp;0x23&nbsp;<br />#define&nbsp;STATUS_REG&nbsp;&nbsp;0x27&nbsp;<br />#define&nbsp;OUTX_L&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x28&nbsp;<br />#define&nbsp;OUTX_H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x29&nbsp;<br />#define&nbsp;OUTY_L&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x2a&nbsp;<br />#define&nbsp;OUTY_H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x2b&nbsp;<br />#define&nbsp;OUTZ_L&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x2c&nbsp;<br />#define&nbsp;OUTZ_H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x2d&nbsp;<br />#define&nbsp;FF_WU_CFG&nbsp;&nbsp;&nbsp;0x30&nbsp;<br />#define&nbsp;FF_WU_SRC&nbsp;&nbsp;&nbsp;0x31&nbsp;<br />#define&nbsp;FF_WU_ACK&nbsp;&nbsp;&nbsp;0x32&nbsp;<br />#define&nbsp;FF_WU_THS_L&nbsp;0x34&nbsp;<br />#define&nbsp;FF_WU_THS_H&nbsp;0x35&nbsp;<br />#define&nbsp;FF_WU_DURATION&nbsp;&nbsp;0x36&nbsp;<br />#define&nbsp;DD_CFG&nbsp;&nbsp;0x38&nbsp;<br />#define&nbsp;DD_SRC&nbsp;&nbsp;0x39&nbsp;<br />#define&nbsp;DD_ACK&nbsp;&nbsp;0x3a&nbsp;<br />#define&nbsp;DD_THSI_L&nbsp;&nbsp;&nbsp;0x3c&nbsp;<br />#define&nbsp;DD_THSI_H&nbsp;&nbsp;&nbsp;0x3d&nbsp;<br />#define&nbsp;DD_THSE_L&nbsp;&nbsp;&nbsp;0x3e&nbsp;<br />#define&nbsp;DD_THSE_H&nbsp;&nbsp;&nbsp;0x3f&nbsp;<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LED0_ON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GpioDataRegs.GPFDAT.bit.GPIOF6=1<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LED0_OFF&nbsp;&nbsp;&nbsp;&nbsp;GpioDataRegs.GPFDAT.bit.GPIOF6=0<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LED1_ON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GpioDataRegs.GPFDAT.bit.GPIOF7=1<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LED1_OFF&nbsp;&nbsp;&nbsp;&nbsp;GpioDataRegs.GPFDAT.bit.GPIOF7=0<br /><br />void&nbsp;delay_loop(void);<br />void&nbsp;spi_xmit(Uint16&nbsp;a);<br />Uint16&nbsp;&nbsp;spi_rev();<br />void&nbsp;Lis3lv02dq_init(void);<br />Uint16&nbsp;read_LIS_register(&nbsp;Uint16&nbsp;register_name);<br />void&nbsp;write_LIS_register(Uint16&nbsp;register_name,&nbsp;Uint16&nbsp;register_value);<br />void&nbsp;Lis3lv02dq_init(void);<br />Uint16&nbsp;LIS_read_x(void);&nbsp;<br />Uint16&nbsp;LIS_read_y(void);&nbsp;<br />Uint16&nbsp;LIS_read_z(void);<br />&nbsp;&nbsp;<br />Uint16&nbsp;var1;<br />Uint16&nbsp;var2;<br />Uint16&nbsp;var3;<br />Uint16&nbsp;ID_Lis3lv02dl;<br />Uint16&nbsp;Led_Flag;<br />Uint16&nbsp;Flag0;<br />Uint16&nbsp;Flag1;<br />Uint16&nbsp;CTRL_REG1_staus;<br />Uint16&nbsp;Vulae_OFFSET_X,Vulae_OFFSET_Y,Vulae_OFFSET_Z;<br />Uint16&nbsp;Vulae_GAIN_X,Vulae_GAIN_Y,Vulae_GAIN_Z;<br />Uint16&nbsp;Vulae_CTRL_REG1,Vulae_CTRL_REG2;<br />Uint16&nbsp;w_Rev_data,accel_x,accel_y,accel_z;<br /><br />//&nbsp;Prototype&nbsp;statements&nbsp;for&nbsp;functions&nbsp;found&nbsp;within&nbsp;this&nbsp;file.<br /><br />void&nbsp;Gpio_select(void);<br />void&nbsp;InitSystem(void);<br />void&nbsp;spi_init();<br />void&nbsp;spi_fifo_init();<br />interrupt&nbsp;void&nbsp;cpu_timer0_isr(void);&nbsp;//&nbsp;定时器中断循环程序<br /><br />//&nbsp;Global&nbsp;Variables<br />Uint16&nbsp;dummy;<br /><br />void&nbsp;main(void)<br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;InitSystem();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Initialize&nbsp;the&nbsp;DSP's&nbsp;core&nbsp;Registers<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;Gpio_select();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Setup&nbsp;the&nbsp;GPIO&nbsp;Multiplex&nbsp;Registers<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;InitPieCtrl();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Function&nbsp;Call&nbsp;to&nbsp;init&nbsp;PIE-unit&nbsp;(&nbsp;code&nbsp;:&nbsp;DSP281x_PieCtrl.c)<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;InitPieVectTable();&nbsp;//&nbsp;Function&nbsp;call&nbsp;to&nbsp;init&nbsp;PIE&nbsp;vector&nbsp;table&nbsp;(&nbsp;code&nbsp;:&nbsp;DSP281x_PieVect.c&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;re-map&nbsp;PIE&nbsp;-&nbsp;entry&nbsp;for&nbsp;Timer&nbsp;0&nbsp;Interrupt&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;EALLOW;&nbsp;&nbsp;//&nbsp;This&nbsp;is&nbsp;needed&nbsp;to&nbsp;write&nbsp;to&nbsp;EALLOW&nbsp;protected&nbsp;registers<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PieVectTable.TINT0&nbsp;=&nbsp;&cpu_timer0_isr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EDIS;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;This&nbsp;is&nbsp;needed&nbsp;to&nbsp;disable&nbsp;write&nbsp;to&nbsp;EALLOW&nbsp;protected&nbsp;registers<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;InitCpuTimers();<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Configure&nbsp;CPU-Timer&nbsp;0&nbsp;to&nbsp;interrupt&nbsp;every&nbsp;50&nbsp;ms:<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;150MHz&nbsp;CPU&nbsp;Freq,&nbsp;50000&nbsp;祍econds&nbsp;interrupt&nbsp;period<br />&nbsp;&nbsp;&nbsp;&nbsp;ConfigCpuTimer(&CpuTimer0,&nbsp;150,&nbsp;50000);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Enable&nbsp;TINT0&nbsp;in&nbsp;the&nbsp;PIE:&nbsp;Group&nbsp;1&nbsp;interrupt&nbsp;7<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PieCtrlRegs.PIEIER1.bit.INTx7&nbsp;=&nbsp;1;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Enable&nbsp;CPU&nbsp;INT1&nbsp;which&nbsp;is&nbsp;connected&nbsp;to&nbsp;CPU-Timer&nbsp;0:<br />//&nbsp;&nbsp;&nbsp;&nbsp;IER&nbsp;=&nbsp;1;<br />//&nbsp;&nbsp;&nbsp;&nbsp;IER&nbsp;|=&nbsp;M_INT1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//使能连接到CPU-TIMER0的CPU中断<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;EINT;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;ERTM;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使能全局实时中断DBGM<br />&nbsp;&nbsp;&nbsp;&nbsp;spi_init();<br />&nbsp;&nbsp;&nbsp;&nbsp;spi_fifo_init();<br />&nbsp;&nbsp;&nbsp;&nbsp;Lis3lv02dq_init();<br />&nbsp;&nbsp;&nbsp;&nbsp;StartCpuTimer0();&nbsp;&nbsp;&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 />&nbsp;&nbsp;&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(CpuTimer0.InterruptCount&nbsp;&lt&nbsp;4);&nbsp;//&nbsp;wait&nbsp;for&nbsp;Timer&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CpuTimer0.InterruptCount&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EALLOW;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysCtrlRegs.WDKEY&nbsp;=&nbsp;0xAA;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;and&nbsp;serve&nbsp;watchdog&nbsp;#2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EDIS;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />void&nbsp;Gpio_select(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;EALLOW;<br />&nbsp;&nbsp;&nbsp;&nbsp;GpioMuxRegs.GPAMUX.all&nbsp;=&nbsp;0x0;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;all&nbsp;GPIO&nbsp;port&nbsp;Pin's&nbsp;to&nbsp;I/O<br />&nbsp;&nbsp;&nbsp;&nbsp;GpioMuxRegs.GPBMUX.all&nbsp;=&nbsp;0x0;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;GpioMuxRegs.GPDMUX.all&nbsp;=&nbsp;0x0;<br />&nbsp;&nbsp;&nbsp;&nbsp;GpioMuxRegs.GPFMUX.all&nbsp;=&nbsp;0xF;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;SPI&nbsp;pins&nbsp;enabled&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;GpioMuxRegs.GPEMUX.all&nbsp;=&nbsp;0x0;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;GpioMuxRegs.GPGMUX.all&nbsp;=&nbsp;0x0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;GpioMuxRegs.GPFMUX.bit.CANTXA_GPIOF6=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//配置GPIOF6为输出<br />&nbsp;&nbsp;&nbsp;&nbsp;GpioMuxRegs.GPFDIR.bit.GPIOF6=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;GpioMuxRegs.GPFMUX.bit.CANRXA_GPIOF7=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//配置GPIOF7为输出<br />&nbsp;&nbsp;&nbsp;&nbsp;GpioMuxRegs.GPFDIR.bit.GPIOF7=1;&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;<br />&nbsp;&nbsp;&nbsp;&nbsp;EDIS;<br />}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /><br />void&nbsp;InitSystem(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EALLOW;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysCtrlRegs.WDCR=&nbsp;0x00AF;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Setup&nbsp;the&nbsp;watchdog&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;0x00E8&nbsp;&nbsp;to&nbsp;disable&nbsp;the&nbsp;Watchdog&nbsp;,&nbsp;Prescaler&nbsp;=&nbsp;1<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;0x00AF&nbsp;&nbsp;to&nbsp;NOT&nbsp;disable&nbsp;the&nbsp;Watchdog,&nbsp;Prescaler&nbsp;=&nbsp;64<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysCtrlRegs.SCSR&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Watchdog&nbsp;generates&nbsp;a&nbsp;RESET&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysCtrlRegs.PLLCR.bit.DIV&nbsp;=&nbsp;10;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Setup&nbsp;the&nbsp;Clock&nbsp;PLL&nbsp;to&nbsp;multiply&nbsp;by&nbsp;5<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysCtrlRegs.HISPCP.all&nbsp;=&nbsp;0x1;&nbsp;//&nbsp;Setup&nbsp;Highspeed&nbsp;Clock&nbsp;Prescaler&nbsp;to&nbsp;divide&nbsp;by&nbsp;2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysCtrlRegs.LOSPCP.all&nbsp;=&nbsp;0x2;&nbsp;//&nbsp;Setup&nbsp;Lowspeed&nbsp;CLock&nbsp;Prescaler&nbsp;to&nbsp;divide&nbsp;by&nbsp;4<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Peripheral&nbsp;clock&nbsp;enables&nbsp;set&nbsp;for&nbsp;the&nbsp;selected&nbsp;peripherals.&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysCtrlRegs.PCLKCR.bit.EVAENCLK=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysCtrlRegs.PCLKCR.bit.EVBENCLK=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysCtrlRegs.PCLKCR.bit.SCIAENCLK=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysCtrlRegs.PCLKCR.bit.SCIBENCLK=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysCtrlRegs.PCLKCR.bit.MCBSPENCLK=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysCtrlRegs.PCLKCR.bit.SPIENCLK=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysCtrlRegs.PCLKCR.bit.ECANENCLK=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysCtrlRegs.PCLKCR.bit.ADCENCLK=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EDIS;<br />}<br />&nbsp;&nbsp;<br />//Step5,所有中断服务程序和函数<br /><br />//发送一个读指令到加速度传感器<br />Uint16&nbsp;read_LIS_register(&nbsp;Uint16&nbsp;register_name)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uint16&nbsp;Tx_data;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;Uint16&nbsp;Rev_data;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;Tx_data&nbsp;=(register_name|0x0080)&lt&lt8;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spi_xmit(Tx_data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(SpiaRegs.SPIFFRX.bit.RXFFST&nbsp;!=1)&nbsp;{&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//等待直到FIFO接收到数据&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rev_data&nbsp;=&nbsp;(SpiaRegs.SPIRXBUF)&nbsp;&&nbsp;0x00FF;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;读取接收到的数据<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(Rev_data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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 />//发送一个写指令到加速度传感器<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;write_LIS_register(Uint16&nbsp;register_name,&nbsp;Uint16&nbsp;register_value)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uint16&nbsp;w_Tx_data;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w_Tx_data&nbsp;=&nbsp;(register_name&lt&lt8)+register_value&nbsp;;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spi_xmit(w_Tx_data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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 />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(SpiaRegs.SPIFFRX.bit.RXFFST&nbsp;!=1)&nbsp;{&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//等待直到FIFO接收到数据&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w_Rev_data&nbsp;=&nbsp;(SpiaRegs.SPIRXBUF)&nbsp;&&nbsp;0x00FF;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//接收数据并且屏蔽无效位<br /><br />}<br /><br />//SPI发送<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;spi_xmit(Uint16&nbsp;a)<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SpiaRegs.SPITXBUF=a;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//向SPI发送缓冲写数据<br />&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;<br />//加速度计Lis3lv02dq初始化<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;Lis3lv02dq_init(void)&nbsp;<br />{&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ID_Lis3lv02dl&nbsp;=&nbsp;read_LIS_register(WHO_AM_I);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//读取器件ID<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_LIS_register(CTRL_REG1,&nbsp;0xD7);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置采样率,160khz。正常工作模式&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_LIS_register(CTRL_REG2,&nbsp;0x14);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//从内flash校准参数,如X/Y/Z轴的偏移量和增益,<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;//调整到出厂设置,调往boot位置o<br />&nbsp;&nbsp;&nbsp;delay_loop();&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_LIS_register(CTRL_REG1,&nbsp;0xD7);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置采样率,160khz。正常工作模式<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_LIS_register(CTRL_REG2,&nbsp;0x44);&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;//使能数据更新信号<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Vulae_OFFSET_X&nbsp;=&nbsp;read_LIS_register(OFFSET_X);&nbsp;&nbsp;&nbsp;//读取X轴加速度偏移量<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Vulae_OFFSET_Y&nbsp;=&nbsp;read_LIS_register(OFFSET_Y);&nbsp;&nbsp;&nbsp;//读取Y轴加速度偏移量<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Vulae_OFFSET_Z&nbsp;=&nbsp;read_LIS_register(OFFSET_Z);&nbsp;&nbsp;&nbsp;//读取Z轴加速度偏移量<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Vulae_GAIN_X&nbsp;=&nbsp;read_LIS_register(GAIN_X);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//读取X轴加速度增益<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Vulae_GAIN_Y&nbsp;=&nbsp;read_LIS_register(GAIN_Y);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//读取Y轴加速度增益<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Vulae_GAIN_Z&nbsp;=&nbsp;read_LIS_register(GAIN_Z);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//读取Z轴加速度增益<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_LIS_register(CTRL_REG1,&nbsp;0xD7);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//写CTRL_REG1工作状态,正常工作<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Vulae_CTRL_REG1&nbsp;=&nbsp;read_LIS_register(CTRL_REG1);&nbsp;//读取CTRL_REG1<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Vulae_CTRL_REG2&nbsp;=&nbsp;read_LIS_register(CTRL_REG2);&nbsp;//读取CTRL_REG2<br /><br /><br />}&nbsp;<br />//读取X轴加速度<br />Uint16&nbsp;LIS_read_x(void)&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uint16&nbsp;low,&nbsp;high;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;low&nbsp;=&nbsp;read_LIS_register(0x28);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;high&nbsp;=&nbsp;read_LIS_register(0x29);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;accel_x&nbsp;=&nbsp;(((Uint16)high)&lt&lt8)&nbsp;|&nbsp;low;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(accel_x);&nbsp;&nbsp;&nbsp;<br />}&nbsp;<br /><br />//读取Y轴加速度<br />Uint16&nbsp;LIS_read_y(void)&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uint16&nbsp;low,&nbsp;high;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;low&nbsp;=&nbsp;read_LIS_register(0x2A);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;high&nbsp;=&nbsp;read_LIS_register(0x2B);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;accel_y&nbsp;=&nbsp;(((Uint16)high)&lt&lt8)&nbsp;|&nbsp;low;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(accel_y);&nbsp;&nbsp;<br />}&nbsp;<br /><br />//读取Z轴加速度<br />Uint16&nbsp;LIS_read_z(void)&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uint16&nbsp;low,&nbsp;high;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;low&nbsp;=&nbsp;read_LIS_register(0x2C);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;high&nbsp;=&nbsp;read_LIS_register(0x2D);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;accel_z&nbsp;=&nbsp;(((Uint16)high)&lt&lt8)&nbsp;|&nbsp;low;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(accel_z);&nbsp;<br />}&nbsp;<br /><br />//定时器中断程序<br />interrupt&nbsp;void&nbsp;cpu_timer0_isr(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;CpuTimer0.InterruptCount++;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LIS_read_x();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//读取X轴加速度<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LIS_read_y();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//读取Y轴加速度<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LIS_read_z();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//读取Z轴加速度<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(Led_Flag&nbsp;==&nbsp;1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//驱动LED灯<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LED0_OFF;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LED1_ON;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Led_Flag&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LED0_ON;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LED1_OFF;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Led_Flag&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;每次中断复位看门狗&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EALLOW;<br />&nbsp;&nbsp;&nbsp;&nbsp;SysCtrlRegs.WDKEY&nbsp;=&nbsp;0x55;&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;EDIS;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;PieCtrlRegs.PIEACK.all&nbsp;=&nbsp;PIEACK_GROUP1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//申明已经接收到中断并且允许接收更多的中断<br />}<br /><br />void&nbsp;delay_loop()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt&nbsp;1000000;&nbsp;i++)&nbsp;{}<br />}<br /><br /><br />void&nbsp;error(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;asm(&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ESTOP0&quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;for&nbsp;(;;);<br />}<br /><br />void&nbsp;spi_init()<br />{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SpiaRegs.SPICCR.all&nbsp;=0x000F;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;复位,数据在上升沿输出&nbsp;,&nbsp;字符长度为16位&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SpiaRegs.SPICTL.all&nbsp;=0x0006;&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;使能发送,SPI中断禁止<br />&nbsp;&nbsp;&nbsp;&nbsp;SpiaRegs.SPIBRR&nbsp;=0x007C;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//300KHZ设置波特率&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SpiaRegs.SPICCR.all&nbsp;=0x008F;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;退出复位,数据在上升沿输出&nbsp;,&nbsp;字符长度为16位&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SpiaRegs.SPIPRI.bit.FREE&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;SPI操作,自由运行<br />}<br /><br /><br />void&nbsp;spi_fifo_init()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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 />//&nbsp;初始化&nbsp;SPI&nbsp;FIFO&nbsp;寄存器<br />&nbsp;&nbsp;&nbsp;&nbsp;SpiaRegs.SPIFFTX.all=0xE040;<br />&nbsp;&nbsp;&nbsp;&nbsp;SpiaRegs.SPIFFRX.all=0x204f;<br />&nbsp;&nbsp;&nbsp;&nbsp;SpiaRegs.SPIFFCT.all=0x0;<br />}&nbsp;&nbsp;<br /><br />//===========================================================================<br />//&nbsp;代码结束<br />//===========================================================================<br /><br />
 楼主| takeshic 发表于 2008-7-1 22:08 | 显示全部楼层

感觉好简单啊!

没一会就做完了……
isbit 发表于 2009-8-16 08:12 | 显示全部楼层
LZ真牛
tree2000zz 发表于 2009-9-17 15:59 | 显示全部楼层
楼主没有和厂家签订保密协议么?
加速度姿态 发表于 2011-4-24 19:20 | 显示全部楼层
你这是用什么单片机和什么加速度的?
霜刀雪剑 发表于 2014-10-14 11:10 | 显示全部楼层
顶一个。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

47

帖子

0

粉丝
快速回复 返回顶部 返回列表