[mw_shl_code=c,true]/**************************************************************************************************
*函数:void UART1_RX_RXNE(void)
*功能:串口接收中断函数
*参数:
*返回:
*说明:
**************************************************************************************************/
#pragma vector=0x14
__interrupt void UART1_RX_RXNE(void)
{
MAX_485_RX;//485 使能拉低,接收数据
if (UART1_GetITStatus(UART1_IT_RXNE) != RESET)
{
data[j++] = UART_ReceiveByte();
}
if(j == 9)
{
//UART_SendString(addr, sizeof(addr));
mark = false;
j = 0;
MAX_485_TX;//485 使能拉高,发送数据
}
UART1_ClearITPendingBit(UART1_IT_RXNE);//清楚中断标志
}
/**************************************************************************************************
*函数:void TIM1_OVR_UIF(void)
*功能:串口定时发送中断函数
*参数:
*返回:
*说明:
**************************************************************************************************/
#pragma vector=0x0F
__interrupt void TIM1_OVR_UIF(void)
{
MAX_485_TX;//485 使能拉高,发送数据
UART_SendString(addr, sizeof(addr));
UART_SendString(data, sizeof(data));
TIM2_ClearITPendingBit(TIM2_IT_UPDATE);//清楚中断标志
MAX_485_RX;//485 使能拉低,接收数据
}[/mw_shl_code]
[mw_shl_code=c,true]#define MAX_485_PORT GPIOD
#define MAX_485_TR_PIN GPIO_PIN_4
#define MAX_485_TX MAX_485_PORT->ODR |= (uint8_t)MAX_485_TR_PIN //485 使能拉高,发送数据
#define MAX_485_RX MAX_485_PORT->ODR &= (uint8_t)(~MAX_485_TR_PIN) //485 使能拉低,接收数据
/**************************************************************************************************
*函数:void CLK_INIT(void)
*功能:时钟初始化
*参数:无
*返回:无
*说明:
**************************************************************************************************/
void CLK_INIT(void)
{
CLK_HSICmd(ENABLE);//使能内部高频RC
CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);//内部高速RC振荡时钟分频 16MHZ
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV8);//CPU核心时钟分频
CLK_ClockSwitchCmd(ENABLE); //切换使能
CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO ,CLK_SOURCE_HSE,DISABLE,CLK_CURRENTCLOCKSTATE_DISABLE);//切换配置
CLK_PeripheralClockConfig(CLK_PERIPHERAL_UART1,ENABLE);//串口1时钟开
}
/**************************************************************************************************
*函数:void TIM2_INIT(void)
*功能:定时器2初始化
*参数:无
*返回:无
*说明:
**************************************************************************************************/
void TIM2_INIT(void)
{
TIM2_TimeBaseInit(TIM2_PRESCALER_1024, 0X3D09);//64分频得到31250HZ的定时器时钟,1s
TIM2_Cmd(ENABLE);//启动定时器
TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE);//中断配置
}
/**************************************************************************************************
*函数:void UART1_INIT(void)
*功能:串口1初始化
*参数:无
*返回:无
*说明:
**************************************************************************************************/
void UART1_INIT(void)
{
UART1_Cmd(ENABLE);//开串口
UART1_Init((u32)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);
//UART1_ITConfig(UART1_IT_TXE, DISABLE);//关串口开始发送中断
//UART1_ITConfig(UART1_IT_TC, DISABLE);//关串口发送结束中断
UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);//UART1_IT_RXNE,接收数据寄存器非空或溢出错误中断
UART1_WakeUpConfig(UART1_WAKEUP_IDLELINE );//被空闲总线唤醒
UART1_ReceiverWakeUpCmd(ENABLE);//开接收唤醒
GPIO_Init(MAX_485_PORT, MAX_485_TR_PIN, GPIO_MODE_OUT_PP_LOW_FAST);//初始化GPIO,高速推挽输出低电平
//MAX_485_RX;//485 使能拉低,接收数据
}[/mw_shl_code]
|