OpenEdv-开源电子网

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

RS232输出不显示数值,感觉.c .h文件没问题

[复制链接]

4

主题

13

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2019-11-12
在线时间
6 小时
发表于 2020-1-2 16:09:59 | 显示全部楼层 |阅读模式
1金钱
if(h==50)
                               {
                                           rs232buf[0]=0x5A;
                                           rs232buf[1]=0xA5;
                                           rs232buf[2]=0x05;
                                           rs232buf[3]=0x82;
                                           rs232buf[4]=0x00;
                                           rs232buf[5]=0x05;
                                           rs232buf[6]=0x00;
                                           rs232buf[7]=0x07;
                       RS232_Send_Data(rs232buf,8);                                          
                                           LED2=!LED2;
                                           h=0;
                               }       


void RS232_Init(u32 pclk1,u32 bound)
{
        float temp;
        u16 mantissa;
        u16 fraction;
        temp=(float)(pclk1*1000000)/(bound*16); //得到USARTDIV
        mantissa=temp;                                 //得到整数部分
        fraction=(temp-mantissa)*16; //得到小数部分         
    mantissa<<=4;
        mantissa+=fraction;
        RCC->APB2ENR|=1<<4;           //使能PORTC口时钟  
        GPIOC->CRH&=0XFFFF00FF;        //IO状态设置
        GPIOC->CRH|=0X00008B00;        //IO状态设置          

        RCC->APB1ENR|=1<<19;          //使能串口时钟
                  
        RCC->APB1RSTR|=1<<19;   //复位串口4
        RCC->APB1RSTR&=~(1<<19);//停止复位                     
        //波特率设置
        UART4->BRR=mantissa;         // 波特率设置         
        UART4->CR1|=0X200C;          //1位停止,无校验位.
#ifdef EN_UART4_RX                          //如果使能了接收
        //使能接收中断
        UART4->CR1|=1<<8;            //PE中断使能
        UART4->CR1|=1<<5;            //接收缓冲区非空中断使能                   
        MY_NVIC_Init(3,3,UART4_IRQn,2);//组2,最低优先级
#endif
}


void RS232_Send_Data(u8 *buf,u8 len)
{
        u8 t;
          for(t=0;t<len;t++)                //循环发送数据
        {
                while((UART4->SR&0X40)==0);//等待发送结束                  
                UART4->DR=buf[t];
        }         
        while((UART4->SR&0X40)==0);//等待发送结束       
        RS232_RX_CNT=0;          
}

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2020-1-3 02:04:34 | 显示全部楼层
不能感觉,直接测试,你用一个可以通信的工程试下先
回复

使用道具 举报

8

主题

72

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
金钱
292
注册时间
2018-8-14
在线时间
37 小时
发表于 2020-1-3 08:58:52 | 显示全部楼层
这种情况应该是波特率没对上,
回复

使用道具 举报

8

主题

72

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
金钱
292
注册时间
2018-8-14
在线时间
37 小时
发表于 2020-1-3 08:59:21 | 显示全部楼层
这种情况应该是波特率没对上
回复

使用道具 举报

8

主题

72

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
金钱
292
注册时间
2018-8-14
在线时间
37 小时
发表于 2020-1-3 08:59:48 | 显示全部楼层
你看看波特率对上了吗
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-20 14:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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