最近项目忙,只有晚上才能测评一下UFUN了,先给新手带来程序调试结果和备注,程序有不懂的可以提问,我会看到后回复大家。
插入SD卡测试结果:
LIS3DH Init is succeed!
External Reset occurred....
No need to configure RTC....
ManufacturerID:0x3
OEM_appliID:0x5344
ProductName:SU02G
ProductVersion: 80
ProductSerialNumber:b897ef
ManufactureDate:09-8
CID_CRC:17
CSD Structure Version:1
发现SD卡!
Current Time: 00:02:21
X=227, Y=-71, Z=-1045
The AD_SIG1 value is: 15
The AD_SIG2 value is: 14
未插入SD卡测试结果:
LIS3DH Init is succeed!
External Reset occurred....
No need to configure RTC....
没有发现 SD 卡设备!
Current Time: 00:05:08
X=222, Y=-60, Z=-1027
The AD_SIG1 value is: 15
The AD_SIG2 value is: 14
主程序分析:
/**************************************************************/
//程 序 名: main()
//开 发 者: MingH
//入口参数: 无
//功能说明: 主函数
//**************************************************************/
int main(void)
{
unsigned char err_code;
RCC_Config();//时钟初始化配置,配置系统时钟72M.
Beep_Init(); //蜂鸣器初始化配置,配置定时器1来控制蜂鸣器发声,开启蜂鸣器
Touch_Init();//触摸按键初始化,设置为浮空输入
Pcie_Gpio_Init();//Pcie的IO配置为推挽输出
Tim3_Init();//定时器3初始化,配置中断优先级分组为0组,抢占优先级0,响应优先级2
RGB_Init();//RGB初始化,配置定时器2的通道ch1、ch2、ch3控制RGB
RCC_GetClocksFreq(&RCC_ClockFreq);//获取系统时钟
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);//配置SysTick时钟
USB2Serial_Init();//串口1初始化配置,配置波特率115200
Pwm_Init();//配置定时器4的通道ch1和ch2输出pwm波形
Adc_Init();//ADC初始化,开启DMA传输采集AD转化值
I2C_GPIO_Configuration();//I2C的IO初始化为开漏输出
err_code = LIS3DH_Init();//初始化LIS3DH,初始化成功返回NO_ERROR
if (NO_ERROR == err_code)//判断LIS3DH初始化是否成功
{
printf("\r\nLIS3DH Init is succeed! \r\n");//打印成功信息
}
else
{
printf("\r\nLIS3DH Init is failed! \r\n");//打印失败信息
}
RTC_Init();// RTC 初始化配置
if(SD_Init() == SD_OK)//SD初始化,成功返回SD_OK
{
printf ("\r\n发现SD卡!\r\n");//打印SD卡成功信息
}
else
{
printf("\r\n没有发现 SD 卡设备! \r\n");//打印SD卡失败信息
}
printf("\r\n\r\n");//回车换行
save_sd_detect = SD_Detect(); //初始化SD卡插入状态,检查SD卡是插入
SysTick_Delay_ms(500);//延时500ms
TIM_Cmd(TIM1, DISABLE);//关闭定时器1,蜂鸣器关闭
TIM_CtrlPWMOutputs(TIM1, DISABLE);//关闭定时器1输出
while (1)
{
if(read_sd_detect_flag)//读取SD插入状态
{
if (save_sd_detect != SD_Detect())//检测SD卡状态变化
{
/* 蜂鸣器响 */
TIM_Cmd(TIM1, ENABLE);//开启定时器1
TIM_CtrlPWMOutputs(TIM1, ENABLE);//使能定时器1输出
sd_detect_change = 1; //SD卡插入状态有变
buzzer_delay = 0;//蜂鸣器延时清零
if (SD_Detect() != SD_NOT_PRESENT)//判断SD卡是否插入
{
if(SD_Init() == SD_OK)//初始化SD卡
{
printf ("\r\n发现SD卡!\r\n");//打印SD卡成功信息
}
else
{
printf("\r\n没有发现 SD 卡设备! \r\n");//打印SD卡失败信息
}
printf("\r\n\r\n");//回车换行
save_sd_detect = SD_Detect(); //初始化SD卡插入状态
}
}
save_sd_detect = SD_Detect();//保存SD卡插入状态
read_sd_detect_flag = 0;//清除SD读取标志
}
Time_Show();//打印时间
Test_Pcie_Gpio();//Pcie高低电平变化
Touch_Key_Proc();//触摸按键读取,如果按下,点亮LED,否则关闭LED
if (read_lis3dh_flag)//读取Lis3dh数据标志判断
{
Collect_Data(ACCdata);//读取Lis3dh数据
for (i=0; i<3; i++)//Lis3dh数据处理
{
if (oldACCdata < ACCdata)
{
ACCdiff = ACCdata - oldACCdata;
}
else
{
ACCdiff = oldACCdata - ACCdata;
}
}
RGB_Control(ACCdiff[0]<<2, ACCdiff[1]<<2, ACCdiff[2]<<2);//Lis3dh数据控制RGB亮度
for (i=0; i<3; i++)//保持Lis3dh数据
{
oldACCdata = ACCdata;
}
read_lis3dh_flag = 0;//清除Lis3dh读取标志
}
if (one_second_flag)//秒标志判断
{
printf("X=%d, Y=%d, Z=%d\r\n\r\n", ACCdata[1], ACCdata[0], ACCdata[2]);//打印Lis3dh数据
Adc_Proc();//Adc处理函数,打印AD值
one_second_flag = 0;//清除秒标志
}
}
}