/********************************************************************
* Function Name : SendPort_Init(void)
* Function : 红外发送端口控制初始化
* parameter :
* Description : void
* Return : void
*********************************************************************/
void SendPort_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* 使能PD端口时钟 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
/* 使能PD端口配置 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 |GPIO_Pin_2 |GPIO_Pin_3; //LED0-->PF6~~~PF10 端口配置
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_SetBits(GPIOC, GPIO_Pin_0 |GPIO_Pin_1 |GPIO_Pin_2); // PD0~~~PD2输出高
GPIO_ResetBits(GPIOD, GPIO_Pin_3); // 注意!!!!!!!!!!!!
}
/*****************************************
-- 示波器接收的键码 52: 0101 0010
-- 单片机接收的键码 4A: 0100 1010
-- 发送的键码 4A: 0100 1010
-- 验证平台: 长虹电视机、单片机
验证通过: 电视机可接收
*****************************************/
u16 sendCode[200] = {0};
void IR_SendData(u32 SendAddr)
{
u8 i;
// u16 sendCode[200] = {0};
//---------- 已通过验证
// for(i=0; i<199; i++){
// sendCode[i] = PulseTab[i];
// }
//---------- 已通过验证
FLASH_ReadData(SendAddr,sendCode,200); // 从相应FLASH地址取出数据
for(i=0; i<100; i++){
if((sendCode[2*i]!=0) && (sendCode[2*i+1]!=0)){
IR_SEND = 0;
delay_us(sendCode[2*i]);
IR_SEND = 1;
delay_us(sendCode[2*i+1]);
}
}
// IR_SEND = 0;
// /* 下面两句及其重要,否则出错!!! */
// delay_us(555);
IR_SEND = 1;
}
原文地址:http://blog.csdn.net/u013686019/article/details/19897961