初级会员

- 积分
- 65
- 金钱
- 65
- 注册时间
- 2015-7-3
- 在线时间
- 8 小时
|
2金钱
//3õê¼»ˉIO ′®¿ú3
//pclk1 CLK1ê±ÖóÆμÂê(Mhz)
//bound:2¨ìØÂê
void RS485_Init(u32 bound)
{
USART_InitTypeDef USART_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);//ê1ÄüUSART3ê±Öó
RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART3,ENABLE);//¸′λ′®¿ú3
RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART3,DISABLE);//í£Ö1¸′λ
#ifdef EN_USART3_RX //èç1ûê1Äüá˽óêÕ
USART_InitStructure.USART_BaudRate = bound;//2¨ìØÂêéèÖÃ
USART_InitStructure.USART_WordLength = USART_WordLength_8b;//8λêy¾Y3¤¶è
USART_InitStructure.USART_StopBits = USART_StopBits_1;//ò»¸öí£Ö1λ
USART_InitStructure.USART_Parity = USART_Parity_No;///ÆæÅ¼D£Ñéλ
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//ÎTó2¼têy¾Yá÷¿ØÖÆ
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//êÕ·¢Ä£ê½
USART_Init(USART3, &USART_InitStructure); ; //3õê¼»ˉ′®¿ú
USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//¿aÆôÖD¶Ï
USART_Cmd(USART3, ENABLE); //ê1Äü′®¿ú
#endif
RS485_TX_EN=0; //ĬèÏÎa½óêÕÄ£ê½
}
void USART3_IRQHandler(void)
{
u8 res=0,ib=0;
if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET) //½óêÕμ½êy¾Y
{
USART_ClearITPendingBit(USART3,USART_IT_RXNE);
res =USART_ReceiveData(USART3); //¶á衽óêÕμ½μÄêy¾Y
RS485_RX_BUF[RS485_RX_CNT]=res;
RS485_RX_CNT++;
if(res==0xF0)
{
RS485_Rev_Num=RS485_RX_CNT-1;
for(ib=0;ib<RS485_Rev_Num;ib++) RS485_Rev_Data[ib]=RS485_RX_BUF[ib];
RS485_RX_CNT=0;
F_RS485=1;
}
}
}
void Uart_TX_Process(void)
{
// if(F_rs485_clk==1)
// {
F_rs485_clk=0;
if(RS485_TX_CNT!=0) //ǽ°å485′®¿ú·¢Ëí
{
if(USART_GetFlagStatus(USART3, USART_FLAG_TC) != RESET)
{
USART_ClearITPendingBit(USART3,USART_FLAG_TC);
RS485_TX_EN=1;
RS485_TX_CNT--;
USART_SendData(USART3,RS485_TX_BUF[RS485_TX_CNT]);
}
}
else RS485_TX_EN=0; //éèÖÃÎa½óêÕÄ£ê½
if(Relay_TX_NUM!=0) //12·¼ìμçÆ÷′®¿úêy¾Y
{
if(USART_GetFlagStatus(UART4, USART_FLAG_TC) != RESET)
{
USART_SendData(UART4,Relay_TX_BUF[Relay_TX_NUM]);
Relay_TX_NUM--;
}
}
// }
}
|
-
接收中断
-
发送程序
|