static void fm_reg_init(void);
u16 fre = 10500;
u16 rssi = 0;
u8 vol = 3;
//全局变量,用于存储读ID和读寄存器的值
u16 gChipID = 0; //芯片ID号
u8 RDA5807P_REGW[10]; //寄存器
u8 RDA5807N_initialization_reg[]={
#if defined(_SHARE_CRYSTAL_24MHz_)
0xC0, 0x51, //02H:
#elif defined(_SHARE_CRYSTAL_12MHz_)
0xC0, 0x11, //02H:
#elif defined(_SHARE_CRYSTAL_32KHz_)
0xC0, 0x01, //02H: //02H寄存器第10位必须为1
//0xD0, 0x01, //02H: //开启增强低音
#else
0xC0, 0x01,
#endif
0x00, 0x00,
0x04, 0x00,
0xC6, 0xad, //05h
0x60, 0x00,
0x42, 0xC6,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00, //0x0ah
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00, //0x10h
0x00, 0x19,
0x2a, 0x11,
0xB0, 0x42,
0x2A, 0x11,
0xb8, 0x31, //0x15h
0xc0, 0x00,
0x2a, 0x91,
0x94, 0x00,
0x00, 0xa8,
0xc4, 0x00, //0x1ah
0xF7, 0xcF,
0x2A, 0xDC, //0x1ch
0x80, 0x6F,
0x46, 0x08,
0x00, 0x86,
0x06, 0x61, //0x20H
0x00, 0x00,
0x10, 0x9E,
0x23, 0xC8,
0x04, 0x06,
0x0E, 0x1C, //0x25H
};
void fm_init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_GPIOA, ENABLE); ///
GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pins = FM_EN_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT_PP;
GPIO_InitStructure.GPIO_MaxSpeed = GPIO_MaxSpeed_50MHz;
GPIO_Init(FM_EN_PORT, &GPIO_InitStructure);
fm_on();
fm_reg_init();
}
void fm_on(void)
{
GPIO_SetBits(FM_EN_PORT, FM_EN_PIN);
}
void fm_off(void)
{
GPIO_ResetBits(FM_EN_PORT, FM_EN_PIN);
}
//初始化RDA5807P,返回1初始化成功
u8 RDA5807P_Intialization(void)
{
u8 error_ind = 0;
u8 RDA5807P_REGR[10]={0x0};
u8 i = 0;
RDA5807P_REGW[0] = 0x00;//软件复位指令
RDA5807P_REGW[1] = 0x02;
/*对 RDA5807M进行写操作时,MCU 写入寄存器的顺序如下:02H 的高字节,02H 的低字节,03H 的高字节,……,直到结束。RDA5807M在 MCU 写入每个字节后都会返回一个ACK。MCU 会给出 STOP 来



