/********************************** (C) COPYRIGHT ******************************** File Name : Main.c* Author : WCH* Version : V1.0* Date : 2020/08/06* Description : SPI0演示 Master/Slave 模式数据收发********************************************************************************** Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.* Attention: This software (modified or not) and binary are used for * microcontroller manufactured by Nanjing Qinheng Microelectronics.*******************************************************************************/#include "CH58x_common.h"__attribute__((aligned(4))) uint8_t spiBuff[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6};
__attribute__((aligned(4))) uint8_t spiBuffrev[64] = {0};uint8_t count=0;void DebugInit(void) // SPI0与例程惯用串口打印引脚冲突,所以此例程改用UART1_输出打印
{GPIOB_SetBits(GPIO_Pin_13);GPIOPinRemap(ENABLE, RB_PIN_UART1);GPIOB_ModeCfg(GPIO_Pin_12, GPIO_ModeIN_PU);GPIOB_ModeCfg(GPIO_Pin_13, GPIO_ModeOut_PP_5mA);UART1_DefInit();
}__HIGH_CODE
void Main_Process(void)
{if(count){for(uint8_t i=0;i<count;i++){PRINT("%02X ",spiBuffrev[i]);}PRINT("\n");count=0;}
}void SPI_INIT(void)
{/* 设备模式 */PRINT("1.spi0 mul slave mode \n");GPIOA_ModeCfg(GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15, GPIO_ModeIN_PU);SPI0_SlaveInit();R8_SPI0_CTRL_MOD |= RB_SPI_FIFO_DIR;//设置输入方向SPI0_ClearITFlag(RB_SPI_IE_BYTE_END);//单字节收发完成中断
SPI0_ITCfg(ENABLE, RB_SPI_IE_BYTE_END);PFIC_EnableIRQ( SPI0_IRQn );
}int main()
{HSECFG_Capacitance(HSECap_18p);SetSysClock(CLK_SOURCE_HSE_PLL_62_4MHz);/* 配置串口调试 */DebugInit();PRINT("Start @ChipID=%02X\n", R8_CHIP_ID);SPI_INIT();DelayMs(100);while(1){Main_Process();}
}/********************************************************************** @fn SPI0_IRQHandler** @brief SPI0中断函数** @return none*/
__INTERRUPT
__HIGH_CODE
void SPI0_IRQHandler(void)
{if(SPI0_GetITFlag(RB_SPI_IE_BYTE_END))//单字节收发完成中断
{while(R8_SPI0_FIFO_COUNT){spiBuffrev[count]=R8_SPI0_FIFO;count++;}SPI0_ClearITFlag(RB_SPI_IE_BYTE_END);}
}