模块的功能:模块为串口输出数据,使用者通过串口连接后,发送输出指令,例如 0xA5+0x45+0xEA 给模块,模块将连续输出温度数据下面是我自己编写的程序已经使能了串口接收中断,但感觉程序一直停留在串口发送指令中,但又不知道问题出在哪里?没连接上模块之前系统提示led0是在闪烁,但一连接上模块,指示灯就不亮,并且中断指示灯led1也不闪。硬件连接是没问题的,还有直接用电脑的串口助手利用usb to ttl给模块发送指令也可以返回温度数据
望前辈瞟一眼指点一二,看看问题出在哪里,新手上路搞了两天了,课程设计第一步就卡了,时间很紧,都想放弃了
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "lcd.h"
u8* rebuff[9];
int sign=0;
int i=0;
void USART1_IRQHandler(void)//中断处理函数
{
LED1=~LED1;//中断指示灯
if(USART_GetITStatus(USART1,USART_IT_RXNE)==RESET)//如果收到数据
*rebuff[i]=USART_ReceiveData( USART1);//读数据
i++;
if(i==8)
{
i=0;
// sign=1;
}
}
void send_commend(unsigned char com)//发送字节命令
{
// while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);//等待发送完成
USART1->DR=com;
//while(!USART_SR_TC );
//等待发送完成
// USART_SR_TC=0;
}
int main(void)
{
u8 times=0;
// sign=0;
delay_init(); //延时函数初始化
NVIC_Configuration();// 设置中断优先级分组
uart_init(115200); //串口初始化为115200
LED_Init(); //初始化与LED连接的硬件接口
LCD_Init();
POINT_COLOR=RED;
LCD_Clear(GREEN);
// USART_SendData(USART1, 0xA5);
// USART_SendData(USART1, 0xAF);
// USART_SendData(USART1, 0x54);
//
// USART_SendData(USART1, 0xA5);
// USART_SendData(USART1, 0x51);
// USART_SendData(USART1, 0xF6);
USART_SendData(USART1, 0xA5);
USART_SendData(USART1, 0x45);
USART_SendData(USART1, 0xEA);//模块连续输出温度指令
while(1)
{
times++;
LCD_ShowString(30,40,200,24,24,rebuff[0]+'0');//将返回的温度的一个字节显示在触摸屏上
if(times%30==0)LED0=!LED0;//闪烁LED0,提示系统正在运行.
delay_ms(10);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>