OpenEdv-开源电子网

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

蓝牙模块串口数字显示问题。

[复制链接]

15

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2014-4-17
在线时间
4 小时
发表于 2014-4-25 10:12:37 | 显示全部楼层 |阅读模式
本人小白一枚,刚学STM32,想做个手机发送一个数字, 通过蓝牙模块接收,显示到数码管上。



程序大概是这样的

#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h" 
 u16  duan[10] = {0x01E6,0x024,0x02DF,0x027F,0x033D,0x037B,0x03FB,0x0026,0x00FFF,0x0367};
 u16  wei[4] = {0xFFDF,0xFFEF,0xFFF7,0xFFFB}; 
 u16  outled[];
   
int main(void)
{

u8 j;
u32 num=0;
 
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72);     //延时初始化
LED_Init();   //初始化与LED连接的硬件接口
while(1) 
{
num++;
outled[0]=duan[num%10000/1000];
outled[1]=duan[num%1000/100];
outled[2]=duan[num%100/10];
outled[3]=duan[num%10];
   
for(j=0;j<4;j++)
{
GPIOA->ODR=wei[j];

GPIOB->ODR = outled[j];

delay_ms(5);
   }
 
}  
}

下面是串口程序 


#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h" 
#include "key.h"
 

int main(void)
{
u8 t;
u8 len;

  
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72);     //延时初始化 
uart_init(72,9600); //串口初始化为9600
LED_Init();   //初始化与LED连接的硬件接口
   
while(1)
{
if(USART_RX_STA&0x80)
{   
len=USART_RX_STA&0x3f;//得到此次接收到的数据长度
printf("\r\n您发送的消息为:\r\n");
for(t=0;t<len;t++)
{
USART1->DR=USART_RX_BUF[t];




while((USART1->SR&0X40)==0);//等待发送结束
num=USART1->DR

void smg(void)
}
printf("\n\n");//插入换行
USART_RX_STA=0;
}

}  
}

想问下数子怎么样放到,接收器缓冲区中, 跟51的有些不一样。51的是直接把数字赋值给缓冲区。



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

使用道具 举报

13

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2012-7-4
在线时间
0 小时
发表于 2014-4-25 10:27:37 | 显示全部楼层
很简单 缓冲区接收的是字符‘1’  你对字符1进行处理就好了 把他转换成10进制显示
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 21:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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