OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2097|回复: 3

关于stm32f103rct6串口的疑惑

[复制链接]

12

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2018-9-16
在线时间
28 小时
发表于 2018-12-15 13:57:50 | 显示全部楼层 |阅读模式
1金钱
模块的功能:模块为串口输出数据,使用者通过串口连接后,发送输出指令,例如 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);                
        }         
}



最佳答案

查看完整内容[请看2#楼]

u8* rebuff[9]; 为何要定义成指针?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

317

帖子

0

精华

高级会员

Rank: 4

积分
863
金钱
863
注册时间
2015-2-12
在线时间
354 小时
发表于 2018-12-15 13:57:51 | 显示全部楼层
u8* rebuff[9]; 为何要定义成指针?
回复

使用道具 举报

12

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2018-9-16
在线时间
28 小时
 楼主| 发表于 2018-12-15 18:36:31 | 显示全部楼层
csmjmcc 发表于 2018-12-15 15:30
u8* rebuff[9]; 为何要定义成指针?

因为下面调用这个函数
//*p:字符串起始地址          
void LCD_ShowString(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p)
回复

使用道具 举报

2

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2018-12-18
在线时间
14 小时
发表于 2018-12-18 17:51:40 | 显示全部楼层
执念之年 发表于 2018-12-15 18:36
因为下面调用这个函数
//*p:字符串起始地址          
void LCD_ShowString(u16 x,u16 y,u16 width,u16 height ...

死在这个函数里了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-30 01:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表