使用STM32的两个硬件SPI完成数据的读写,具体的见程序注释。/**************************(C) COPYRIGHT SunHao 2011*************************** 名称:ADDA.c 功能:ADDA的相关配置以及读取函数 作者:孙浩 时间:2011.4.25 版本:1.0 注意:对照TLC2543时序图,确保对应时序一致,读写速度不宜太快 *******************************************************************************/ #include "STM32Lib//stm32f10x.h" #include "hal.h" //模拟开关CD4051对应的通道选择IO定义 #define A_OFF GPIO_ResetBits(GPIOF, GPIO_Pin_8) #define A_ON GPIO_SetBits(GPIOF, GPIO_Pin_8) #define B_OFF GPIO_ResetBits(GPIOF, GPIO_Pin_7) #define B_ON GPIO_SetBits(GPIOF, GPIO_Pin_7) #define C_OFF GPIO_ResetBits(GPIOF, GPIO_Pin_6) #define C_ON GPIO_SetBits(GPIOF, GPIO_Pin_6) /******************************************************************************* 名称:void ADDA_Config(void) 功能:配置ADDA对应的SPI和IO 参数:无 时间:2011.4.20 版本:1.0 注意:配置类似函数一定要注意外设时钟使能,所有用到引脚时钟使能 *******************************************************************************/ void ADDA_Config(void) { SPI_InitTypeDef SPI_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF,ENABLE); /*TLC2543相关IO口定义 */ /* PA5-SCK PA7-MOSI */ GPIO_InitStructure.GPIO_Pin =GPIO_Pin_5 |GPIO_Pin_7 ; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); /*PA4-CS*/ GPIO_SetBits(GPIOA, GPIO_Pin_4);