/******************************************************************** * 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