OpenEdv-开源电子网

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

原子哥的min开发板的stm32rct6的串口连接外设的

[复制链接]

12

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2018-9-16
在线时间
28 小时
发表于 2018-12-13 22:18:22 | 显示全部楼层 |阅读模式
1金钱
用32的串口发送指令给GY-MCU90615 模块,然后通过串口回传温度,GY-MCU90615 模块的主要用法如下,检查了很多遍,但本应该回传的帧的头格式数据都收不到,下面时我的主函数,求大神帮我看看,卡了好长时间了io口的配置是看例程的,前辈们帮忙看看,没准聪明的你们一眼就看出了问题
)I@7~5U6Y(16]~T7OS~IG38.png 9)3}7V$%@$_]QC{RH2Z_B3K.png



#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "lcd.h"
u8* rebuff[9];
void USART1_IRQHandler(void)
{
        int i;
        if(USART_GetITStatus(USART1,USART_IT_RXNE))//如果收到数据
                for(i=0;i<9;i++)
                *rebuff=USART_ReceiveData( USART1);//读数据
//          USART_FLAG_RXNE=0;//清除标志位
}
void send_commend(unsigned char com)//发送字节命令
{
        if(USART_GetFlagStatus( USART1, USART_FLAG_RXNE)==0)
        {
                USART_SendData(USART1, com);
        }
}
int main(void)
{        
         u8 times=0;
        delay_init();                     //延时函数初始化        
        NVIC_Configuration();// 设置中断优先级分组
        uart_init(9600);         //串口初始化为9600
        LED_Init();                           //初始化与LED连接的硬件接口
  LCD_Init();USART_SendData        
        POINT_COLOR=RED;
         (USART1, 0xA5);
                USART_SendData(USART1, 0xAE);
                USART_SendData(USART1, 0x53);//配置波特率为9600;
        while(1)
        {
                times++;
                USART_SendData(USART1, 0xA5);
                USART_SendData(USART1, 0x45);
                USART_SendData(USART1, 0xEA);
                LCD_ShowString(30,40,200,24,24,rebuff[0]);
                if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行.
                        delay_ms(10);           
        }         
}



/USART 3&#245;ê&#188;&#187;ˉéè&#214;&#195;

         USART_InitStructure.USART_BaudRate = bound;//
         USART_InitStructure.USART_WordLength = USART_WordLength_8b;
         USART_InitStructure.USART_StopBits = USART_StopBits_1;//
         USART_InitStructure.USART_Parity = USART_Parity_No;//
         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//
         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;        //

    USART_Init(USART1, &USART_InitStructure); //
    USART_ITConfig(USART1, USART_IT_RXNE  , ENABLE);//开启中断
    USART_Cmd(USART1, ENABLE);                    //ê1&#196;ü′&#174;&#191;ú



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-12-14 02:06:55 | 显示全部楼层
直接通过串口连接电脑,看看能否收到数据?先确认模块是否工作正常!
回复

使用道具 举报

12

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2018-9-16
在线时间
28 小时
 楼主| 发表于 2018-12-14 09:34:39 | 显示全部楼层
我用的是mini串口1,也就是与ch340g相连的,而且我用的是usb下载,要用到串口1,所以无法连接电脑
回复

使用道具 举报

52

主题

334

帖子

0

精华

高级会员

Rank: 4

积分
560
金钱
560
注册时间
2016-4-12
在线时间
230 小时
发表于 2018-12-14 09:58:49 | 显示全部楼层
执念之年 发表于 2018-12-14 09:34
我用的是mini串口1,也就是与ch340g相连的,而且我用的是usb下载,要用到串口1,所以无法连接电脑

原子哥是让你直接用电脑连接温度模块吧?让你直接从PC串口发送指令看看有没有数据返回,是这个意思吧?
回复

使用道具 举报

12

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2018-9-16
在线时间
28 小时
 楼主| 发表于 2018-12-14 12:39:21 | 显示全部楼层
wangmingwei093 发表于 2018-12-14 09:58
原子哥是让你直接用电脑连接温度模块吧?让你直接从PC串口发送指令看看有没有数据返回,是这个意思吧?

我用了一个usb转ttl电平的模块把传感器直接连电脑是正确的,可以返回温度,发送读温度指令是,感觉是我的程序出了问题
回复

使用道具 举报

12

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2018-9-16
在线时间
28 小时
 楼主| 发表于 2018-12-14 12:42:57 | 显示全部楼层
正点原子 发表于 2018-12-14 02:06
直接通过串口连接电脑,看看能否收到数据?先确认模块是否工作正常!

用usb转ttl电平直接连电脑是正确的,我在32上的连接是,把mini板的pA9A10的和rxd与txd的跳线帽拔掉,用多邦线把模块的rxd连接32的txd,感觉是程序有问题
回复

使用道具 举报

12

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2018-9-16
在线时间
28 小时
 楼主| 发表于 2018-12-14 21:46:25 | 显示全部楼层
改成这样后,感觉程序一直停留在发送字节命令中,因为不接上模块灯是闪的,接上模块灯就不闪了,复位也没用,但还是不知道问题在哪儿除零问题

void USART1_IRQHandler(void)
{

       
        if(USART_GetITStatus(USART1,USART_IT_RXNE))//è&#231;1&#251;ê&#213;μ&#189;êy&#190;Y
               
                *rebuff[i]=USART_ReceiveData( USART1);//读数据
       
    i++;
        if(i==8)
        {
                i=0;
                sign=1;//一帧数据接收完毕标志
        }
}
void send_commend(unsigned char com)//发送一个字节命令
{
                USART_SendData(USART1, com);
//while(!USART_SR_TC );
        //μè′y·¢&#203;ííê3é
//        USART_SR_TC=0;
       
}
int main(void)
{       
         u8 times=0;
         sign=0;
        delay_init();                     //&#209;óê±oˉêy3&#245;ê&#188;&#187;ˉ       
        NVIC_Configuration();// éè&#214;&#195;&#214;D&#182;&#207;ó&#197;&#207;è&#188;&#182;·&#214;×é
        uart_init(115200);         //′&#174;&#191;ú3&#245;ê&#188;&#187;ˉ&#206;a115200
        LED_Init();                           //3&#245;ê&#188;&#187;ˉó&#235;LEDá&#172;&#189;óμ&#196;ó2&#188;t&#189;ó&#191;ú
  LCD_Init();
        POINT_COLOR=RED;
         LCD_Clear(GREEN);
                USART_SendData(USART1, 0xA5);
                USART_SendData(USART1, 0x45);
                USART_SendData(USART1, 0xEA);
       
        while(1)
        {
               
               
                times++;
                if(sign)
                {
                LCD_ShowString(30,40,200,24,24,rebuff[0]+'0');
                         LED1=~LED1;
                }
                if(times%30==0)LED0=!LED0;//提示系统正在运行
                        delay_ms(10);
                               
        }         
}
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 23:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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