金牌会员
 
- 积分
- 1364
- 金钱
- 1364
- 注册时间
- 2014-3-27
- 在线时间
- 358 小时
|
发表于 2017-8-14 12:00:36
|
显示全部楼层
本帖最后由 wjfhsym 于 2017-8-14 14:32 编辑
你需要理清楚整个流程。
你的单相模块数据 需要通过read_data(void)这个函数去读出来,首先你发送的8字节数据要成功给到单相模块。给你几个UART1发送函数。
void USART1_SendNByte(u8 *data, u16 num)//
{
while(num--)
{
USART_SendData(USART1, *data++);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
}
}
void USART1_SendString(u8 *str)
{
while(*str != '\0')
{
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
USART_SendData(USART1, *str);
str++;
}
}
void UART1_SentData(uint8_t * Buf,uint16_t Length)
{
uint16_t i;
for(i=0;i<Length;i++)
{
USART_SendData(USART1, Buf);
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);
} while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);
}
则 Send_data(8); 就可以做出相应更改。同时要在main 函数while(1)中 调用 read_data()函数, 发送给单相模块完成后。单相模块会通过串口发送相关电压电流参数到CPU.
此时你再用串口接收中断 ,接收相关数据 。 这个中断接收函数也就是 Analysis_data(void)函数, 不过 函数名字要修改,为void USART1_IRQHandler(void),内容放进去,并做相应修改。
void USART1_IRQHandler(void)
{
uint8_t i;
if(USART_GetITStatus(USART1,USART_IT_RXNE))
{
//相关内容
}
USART_ClearITPendingBit(USART1,USART_IT_RXNE);
}
串口1中断内会得到 单相模块的电压 电压 功率等数据(变量),你再在主函数中的LCD 显示内调用这些变量。
|
|