OpenEdv-开源电子网

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

Mini板的USART1

[复制链接]

12

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2014-7-11
在线时间
0 小时
发表于 2014-10-9 00:27:40 | 显示全部楼层 |阅读模式
5金钱
我将HC05的RX/TX接到mini板上的PA9/PA10但没反应,初始化不了。请问会是甚麽问题?

最佳答案

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

if(temp==4&&USART_RX_BUF[0]=='O'&&USART_RX_BUF[1]=='K') { temp=0;//接收到OK响应 break; } 原因是temp==4,应该是temp==2。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2014-7-11
在线时间
0 小时
 楼主| 发表于 2014-10-9 00:27:41 | 显示全部楼层
if(temp==4&&USART_RX_BUF[0]=='O'&&USART_RX_BUF[1]=='K')
{
temp=0;//接收到OK响应
break;
}


原因是temp==4,应该是temp==2。
回复

使用道具 举报

12

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2014-7-11
在线时间
0 小时
 楼主| 发表于 2014-10-9 09:04:25 | 显示全部楼层
程序

u8 HC05_1_Init(void)
{
u8 retry=10,t;     
u8 temp=1;
RCC->APB2ENR|=1<<2;     //使能PORTA时钟  
RCC->APB2ENR|=1<<4;     //使能PORTC时钟  
//  GPIOA->CRH&=0XFFFFFFF0; //PA8,输入
//  GPIOA->CRH|=0X00000008; 
// GPIOA->ODR|=1<<8;  //PA8上拉 
GPIOC->CRL&=0XFFFFFF0F; //PC1,推挽输出
GPIOC->CRL|=0X00000030; 
GPIOC->ODR&=0<<1;  //PC1输出0
uart_init(72,9600);  //初始化串口1为:9600,波特率.
delay_ms(3000);

while(retry--)
{
HC05_1_KEY=1; //KEY置高,进入AT模式
delay_ms(100);
PrintChar("AT\r\n"); //发送AT测试指令
delay_ms(100);
HC05_1_KEY=0; //KEY拉低,退出AT模式
for(t=0;t<10;t++)  //最长等待50ms,来接收HC05模块的回应
{
if(USART_RX_STA&0X8000)break;
delay_ms(5);
}
if(USART_RX_STA&0X8000) //接收到一次数据了
{
temp=USART_RX_STA&0X7FFF; //得到数据长度
USART_RX_STA=0;  
if(temp==4&&USART_RX_BUF[0]=='O'&&USART_RX_BUF[1]=='K')
{
temp=0;//接收到OK响应
break;
}
}     
}     
if(retry==0)temp=1; //检测失败
return temp;  
}

void uart_init(u32 pclk2,u32 bound)
{    
float temp;
u16 mantissa;
u16 fraction;    
temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV
mantissa=temp;  //得到整数部分
fraction=(temp-mantissa)*16; //得到小数部分  
    mantissa<<=4;
mantissa+=fraction; 
RCC->APB2ENR|=1<<2;   //使能PORTA口时钟  
RCC->APB2ENR|=1<<14;  //使能串口时钟 
GPIOA->CRH&=0XFFFFF00F;//IO状态设置
GPIOA->CRH|=0X000008B0;//IO状态设置
  
RCC->APB2RSTR|=1<<14;   //复位串口1
RCC->APB2RSTR&=~(1<<14);//停止复位        
//波特率设置
  USART1->BRR=mantissa; // 波特率设置  
USART1->CR1|=0X200C;  //1位停止,无校验位.
#if EN_USART1_RX   //如果使能了接收
//使能接收中断
USART1->CR1|=1<<8;    //PE中断使能
USART1->CR1|=1<<5;    //接收缓冲区非空中断使能     
MY_NVIC_Init(3,3,USART1_IRQn,2);//组2,最低优先级 
#endif
}
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-10-9 10:18:23 | 显示全部楼层
PA9,PA10接电脑串口,看看收到的指令,是否正常。然后模拟HC05的回复,看看下位机是否可以识别?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

12

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2014-7-11
在线时间
0 小时
 楼主| 发表于 2014-10-9 15:17:44 | 显示全部楼层
识不出來,是軟或硬件問題?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-10-9 18:54:55 | 显示全部楼层
回复【4楼】eeeddie:
--------------------------------
根据现象分析问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-30 20:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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