📄 main.c
字号:
/******************** (C) COPYRIGHT 2005 STMicroelectronics ********************
* File Name : main.c
* Author : MCD Application Team
* Date First Issued : 09/27/2005 : V1.0
* Description : Main program body
**********************************************************************************
* History:
* 09/27/2005 : V1.0
**********************************************************************************
* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH
* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT
* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*********************************************************************************/
/* Standard include ------------------------------------------------------------*/
#include "73x_lib.h"
#include "ccb_data.h"
#include "systimer.h"
#include "def.h"
#include "start_data.h"
volatile unsigned long TsysCnt;
typedef enum {AM = 1,FM = 2,CD = 3,CDC = 4}PLAYING;
uint8 VOLUME_send[4] = {0xD1 ,0x00 ,0x28 ,0xC0};//19
uint8 CD_status_send[3] = {0XD1 ,0X01 ,0Xc2};
uint8 DA5_AND_DAL_send[16] = {0XD1 ,0x7A ,0x14 ,0x2E ,0x7A ,0x14 ,0x0E,0XFF ,0XFF ,0X7F ,0X71 ,0X10 ,0X00 ,0X02 ,0X00 ,0X41};
uint8 DA5_send[3] = {0xD1 ,0x0B ,0xC8};
uint8 POWER_status[19] = {
0XD1 ,0X65 ,0X6B ,0XFF ,0X65 ,0X6B ,0XFF ,0X65 ,0X6B ,0XFF ,0X65 ,0X6B ,0XFF ,0X84 ,0X10 ,0X00 ,0X03 ,0X00 ,0XC1
};
uint8 AM_status[3] ={0xD1 ,0x0a ,0X5f };
uint8 *point;
int VOLUME_value = 19;
int DA5_value = 5;
int TRE_value = 5;
int DAL_value = 7;
int FAD_value = 7;
uint8 CORRE_playing = CD;
#define UART_buff_size 64
uint8 UART_data_buff[UART_buff_size] ;
volatile u32 UART_data_buff_w =0;
volatile u32 UART_data_buff_r =0;
void delay(void) // delay
{
u8 i;
for(i=0;i<8;i++);
}
void send_start_data(void)
{
uint8 i,j,k;
uint8 tmp;
uint8 half = FALSE;
unsigned long int time;
for(i = 0;i < 100;i++)
{
for(j=0;j<25;j++)
{
if((start_data[i][j] == '\r') && (start_data[i][j+1] == '\n')) //帧数据以0D 0A 结尾
{
break;
}
else if((start_data[i][j] == ':') && (start_data[i][j+1] == '\r'))
{
break;
}
else if((start_data[i][j+2] == ':') && (start_data[i][j+3] == '\r')) //数据半字节发送
{
half = TRUE;
}
if(j==1)
{
CCBBUS_CE_H;
}
tmp = start_data[i][j]; //取一字节数据
for(k=0;k<8;k++) //发送一字节数据
{
CCBBUS_CL_L; //时钟输出低电平
if(tmp & 1) //数据输出
{
CCBBUS_DI_H;
}
else
{
CCBBUS_DI_L;
}
tmp >>= 1; //下一位
delay(); //低电平保持时间
delay();
CCBBUS_CL_H; //时钟输出高电平
if(half == TRUE) //数据半字节发送
{
if(k == 3)
{
half = FALSE;
break;
}
}
delay(); //高电平保持时间
delay();
//
}
delay(); //字节间隔时间
delay();
delay();
delay();
delay();
}
CCBBUS_CE_L;
SetUserTimer(&time); //帧间隔时间
while(ReadUserTimer(&time) < T_5MS);
}
}
void Init_75010w(void)
{
unsigned long int tmp;
CFG_PeripheralClockConfig(CFG_CLK_GPIO3,DISABLE);
CFG_PeripheralClockConfig(CFG_CLK_GPIO3,ENABLE);
//CCBBUS port init:
CCBBUS_CE_OUT; //CE OUT
CCBBUS_CL_OUT; //CLOCK OUT
CCBBUS_DI_OUT; //DATA OUT
RESET_OUT; //RESET OUT
CCBBUS_CE_H;
CCBBUS_CL_H;
CCBBUS_DI_H;
RESET_H; //RESET HIGH
SetUserTimer(&tmp);
while(ReadUserTimer(&tmp) < T_200MS);
CCBBUS_CE_L;
CCBBUS_CL_L;
CCBBUS_DI_L;
RESET_L; //RESET
SetUserTimer(&tmp);
while(ReadUserTimer(&tmp) < T_890MS);
RESET_H;
CCBBUS_CL_H;
SetUserTimer(&tmp);
while(ReadUserTimer(&tmp) < T_25MS);
EIC->ICR &=2; //禁止中断
send_start_data();
EIC->ICR &=3; // 允许中断
}
/**********************************************************************/
void send_volume(uint8 buff[])
{ uint8 j = 0;
uint8 k = 0;
uint8 tmp;
unsigned long int time;
for(j=0;j<4;j++)
{
if(j==1)
{
CCBBUS_CE_H;
}
tmp = buff[j]; //取一字节数据
for(k=0;k<8;k++) //发送一字节数据
{
CCBBUS_CL_L; //时钟输出低电平
if(tmp & 1) //数据输出
{
CCBBUS_DI_H;
}
else
{
CCBBUS_DI_L;
}
tmp >>= 1; //下一位
delay(); //低电平保持时间
CCBBUS_CL_H; //时钟输出高电平
delay(); //高电平保持时间
}
delay(); //字节间隔时间
delay();
delay();
delay();
}
CCBBUS_CE_L;
SetUserTimer(&time); //帧间隔时间
while(ReadUserTimer(&time) < T_5MS);
}
void send_cd_status(const uint8 buff[])
{
uint8 j = 0;
uint8 tmp;
uint8 k = 0;
unsigned long int time;
for(j=0;j<3;j++)
{
if(j==1)
{
CCBBUS_CE_H;
}
tmp = buff[j]; //取一字节数据
for(k=0;k<8;k++) //发送一字节数据
{
CCBBUS_CL_L; //时钟输出低电平
if(tmp & 1) //数据输出
{
CCBBUS_DI_H;
}
else
{
CCBBUS_DI_L;
}
tmp >>= 1; //下一位
delay(); //低电平保持时间
CCBBUS_CL_H; //时钟输出高电平
delay(); //高电平保持时间
}
delay(); //字节间隔时间
delay();
delay();
delay();
}
CCBBUS_CE_L;
SetUserTimer(&time); //帧间隔时间
while(ReadUserTimer(&time) < T_5MS);
}
void send_da5_and_dal(uint8 buff[])
{
uint8 j = 0;
uint8 k = 0;
uint8 tmp;
unsigned long int time;
for(j=0;j<16;j++)
{
if(j==1)
{
CCBBUS_CE_H;
}
tmp = buff[j]; //取一字节数据
for(k=0;k<8;k++) //发送一字节数据
{
CCBBUS_CL_L; //时钟输出低电平
if(tmp & 1) //数据输出
{
CCBBUS_DI_H;
}
else
{
CCBBUS_DI_L;
}
tmp >>= 1; //下一位
delay(); //低电平保持时间
CCBBUS_CL_H; //时钟输出高电平
delay(); //高电平保持时间
}
delay(); //字节间隔时间
delay();
delay();
delay();
}
CCBBUS_CE_L;
SetUserTimer(&time); //帧间隔时间
while(ReadUserTimer(&time) < T_5MS);
}
void send_da5(uint8 buff[])
{
uint8 j = 0;
uint8 k = 0;
uint8 tmp;
unsigned long int time;
for(j=0;j<3;j++)
{
if(j==1)
{
CCBBUS_CE_H;
}
tmp = buff[j]; //取一字节数据
for(k=0;k<8;k++) //发送一字节数据
{
CCBBUS_CL_L; //时钟输出低电平
if(tmp & 1) //数据输出
{
CCBBUS_DI_H;
}
else
{
CCBBUS_DI_L;
}
tmp >>= 1; //下一位
delay(); //低电平保持时间
CCBBUS_CL_H; //时钟输出高电平
delay(); //高电平保持时间
}
delay(); //字节间隔时间
delay();
delay();
delay();
}
CCBBUS_CE_L;
SetUserTimer(&time); //帧间隔时间
while(ReadUserTimer(&time) < T_5MS);
}
void send_POWER_status(const uint8 buff[])
{
uint8 j = 0;
uint8 k = 0;
uint8 tmp;
unsigned long int time;
for(j=0;j<19;j++)
{
if(j==1)
{
CCBBUS_CE_H;
}
tmp = buff[j]; //取一字节数据
for(k=0;k<8;k++) //发送一字节数据
{
CCBBUS_CL_L; //时钟输出低电平
if(tmp & 1) //数据输出
{
CCBBUS_DI_H;
}
else
{
CCBBUS_DI_L;
}
tmp >>= 1; //下一位
delay(); //低电平保持时间
CCBBUS_CL_H; //时钟输出高电平
delay(); //高电平保持时间
}
delay(); //字节间隔时间
delay();
delay();
delay();
}
CCBBUS_CE_L;
SetUserTimer(&time); //帧间隔时间
while(ReadUserTimer(&time) < T_5MS);
}
void send_AM_status(const uint8 buff[])
{
uint8 j = 0;
uint8 k = 0;
uint8 tmp;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -