普通IO口模拟串口通信- 串口通信协议
-
 - //IO模拟串口初始化 1 void IRrec_Init(){
- 2
- 3
- 4 EXTI_InitTypeDef EXTI_InitStructure;
- 5 NVIC_InitTypeDef NVIC_InitStructure;
- 6 GPIO_InitTypeDef GPIO_InitStructure;
- 7
- 8 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); //使能GPIOC时钟
- 9
- 10
- 11 //IR TX C9 使能
- 12 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
- 13 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- 14 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- 15 GPIO_Init(GPIOC, &GPIO_InitStructure);
- 16 GPIO_SetBits(GPIOC, GPIO_Pin_9);// 引脚拉高
- 17
- 18
- 19 //IR RX C8
- 20 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
- 21 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
- 22 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
- 23 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- 24 GPIO_Init(GPIOC, &GPIO_InitStructure);
- 25 GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource8);
- 26
- 27 EXTI_InitStructure.EXTI_Line=EXTI_Line8;
- 28 EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
- 29 EXTI_InitStructure.EXTI_Trigger=
- 30 EXTI_Trigger_Rising_Falling;
- 31 EXTI_InitStructure.EXTI_LineCmd=ENABLE;
- 32 EXTI_Init(&EXTI_InitStructure);
- 33
- 34 NVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQn;
- 35 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;
- 36 NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;
- 37 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
- 38 NVIC_Init(&NVIC_InitStructure);
- 39
- 40 }
复制代码- void IR_SendByte(u8 val)//发送bit位
- {
- u16 i;
- IRSEND=0;//拉低 开始传输
- SysTick_Delay_Us(53);//波特率根据延时在设置 19200波特率
- for(i=0;i<8;i++)
- {
- if(val&0x1)
- {
- IRSEND=1;
- }
- else
- {
- IRSEND=0;
- }
- val>>=1;
- SysTick_Delay_Us(53);
- }
- IRSEND=1;
- SysTick_Delay_Us(53);
- }
- void IR_SendStr(u8*st,u16 len){//在这填入16位数据即可
- int i=0;
- while ((len--)!=0)
- {
- IR_SendByte(st[i]);
- i++;
- }
- }
复制代码
|