?? hal_spi.c
字號:
/** @file
* Implementation of the SPI HAL module
* @author Ole Saether
*/
#include <Nordic\reg24lu1.h>
#include "hal_spi.h"
#define SPI_DATA 0x01
#define SPI_START 0x02
#define SPI_STOP 0x04
void hal_spi_master_init(hal_spi_clkdivider_t ck)
{
uint8_t smctl;
I3FR = 1; // rising edge SPI ready detect
P0EXP = 0x01; // Map SPI master on P0
INTEXP = 0x02; // Select SPI master on IEX3
SPIF = 0; // Clear any pending interrupts
switch(ck)
{
case SPI_CLK_DIV2:
smctl = 0x11;
break;
case SPI_CLK_DIV4:
smctl = 0x12;
break;
case SPI_CLK_DIV8:
smctl = 0x13;
break;
case SPI_CLK_DIV16:
smctl = 0x14;
break;
case SPI_CLK_DIV32:
smctl = 0x15;
break;
case SPI_CLK_DIV64:
default:
smctl = 0x16;
break;
}
SMCTL = smctl; // Enable SPI master with the specified divide factor
}
uint8_t hal_spi_master_read_write(uint8_t b)
{
SPIF = 0; // Clear interrupt request
SMDAT = b; // Start the SPI operation by writing the data
while(SPIF == 0) // Wait until SPI has finished transmitting
;
return SMDAT; // Return the the read byte
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -