OpenEdv-开源电子网

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

请教uart1引脚功能重定义问题!

[复制链接]

23

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2011-8-21
在线时间
58 小时
发表于 2011-11-29 10:55:33 | 显示全部楼层 |阅读模式

原子哥好:
            请教uart1引脚功能重定义问题。datasheet上说PB6,PB7可以重定义为USART1_TX和USART1_RX功能,但是为什么在程序上实现不了,无数据输出我修改了开发板实例程序如下,麻烦原子哥看看问题在哪里? 还有我是用uart下载程序我把开发板TXD,RXD和PA9,PA10连接起来时,可以正常下载程序,但是我把TXD,RXD和PB6,PB7,或者PC10,PC11(这两个引脚也可以可以重定义为USART),发现都不能下载程序,不知道是什么原因。
#include <stm32f10x_lib.h>
#include "sys.h"
#include "usart.h"  
#include "delay.h" 
#include "led.h"
//Mini STM32开发板范例代码1
//跑马灯实验    
//正点原子@ALIENTEK
//技术论坛:www.openedv.com 
void Send_Char(u8 dat)
{     
 while((USART1->SR&0X40)==0);//循环发送,直到发送完毕  
 USART1->DR = dat;     
 
}
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;
 //GPIOA->CRH|=0X000008B0;//IO状态设置

 RCC->APB2ENR|=1<<3;   //使能PORTB口时钟 
 RCC->APB2ENR|=1<<14;  //使能UART1时钟
 GPIOB->CRL&=0X00FFFFFF;
 GPIOB->CRL|=0X8B000000;// PB7为复用输入模式 ; PB6为复用输出模式
 AFIO->MAPR|=1<<2;//USART1_REMAP为1 UART1功能重映射。TX/PB6,RX/PB7 我的程序只修改了这里,其他没有修改过
   
 RCC->APB2RSTR|=1<<14;   //复位串口1
 RCC->APB2RSTR&=~(1<<14);//停止复位       
 //波特率设置
  USART1->BRR=mantissa; // 波特率设置 
 USART1->CR1|=0X200C;  //1位停止,无校验位.
#ifdef EN_USART1_RX    //如果使能了接收
 //使能接收中断
 USART1->CR1|=1<<8;    //PE中断使能
 USART1->CR1|=1<<5;    //接收缓冲区非空中断使能     
 MY_NVIC_Init(3,3,USART1_IRQChannel,2);//组2,最低优先级
#endif
}
 
int main(void)

    u16 i;    
 Stm32_Clock_Init(9); //系统时钟设置
 delay_init(72);      //延时初始化
 
    uart_init(72,9600); //串口1初始化
    while(1)
   {
  for(i=0;i<1000;i++)
 {
     Send_Char(1);
 
 }
 
  } 
}

 

 

 

 

 

 

 

       

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-11-29 11:00:40 | 显示全部楼层
1,要开启复用功能时钟.
2,串口下载属于内部固定的ISP程序,其下载端口为默认的串口1,并且是未开启重映射的,所以你接其他的是没用的.而且你也无法修改.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

23

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2011-8-21
在线时间
58 小时
 楼主| 发表于 2011-11-29 11:09:09 | 显示全部楼层
谢谢,我试试
回复 支持 反对

使用道具 举报

23

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2011-8-21
在线时间
58 小时
 楼主| 发表于 2011-11-29 11:24:33 | 显示全部楼层
回复【2楼】正点原子:
 #include <stm32f10x_lib.h>
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h" 
//Mini STM32开发板范例代码1
//跑马灯实验    
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
void Send_Char(u8 dat)
{      
 while((USART1->SR&0X40)==0);//循环发送,直到发送完毕   
 USART1->DR = dat;      
 
}
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; 
 //GPIOA->CRH|=0X000008B0;//IO状态设置
 RCC->APB2ENR|=1<<3;   //使能PORTB口时钟  
 RCC->APB2ENR|=1<<14;  //使能UART1时钟 
 RCC->APB2ENR|=1<<0;  //辅助功能IO时钟开启 
 GPIOB->CRL&=0X00FFFFFF; 
 GPIOB->CRL|=0X8B000000;// B7为复用输入模式 ; B6为复用输出模式 
 AFIO->MAPR|=1<<2;//USART1_REMAP为1 UART1功能重映射。TX/PB6,RX/PB7
    
 RCC->APB2RSTR|=1<<14;   //复位串口1
 RCC->APB2RSTR&=~(1<<14);//停止复位        
 //波特率设置
  USART1->BRR=mantissa; // 波特率设置  
 USART1->CR1|=0X200C;  //1位停止,无校验位.
#ifdef EN_USART1_RX    //如果使能了接收
 //使能接收中断
 USART1->CR1|=1<<8;    //PE中断使能
 USART1->CR1|=1<<5;    //接收缓冲区非空中断使能      
 MY_NVIC_Init(3,3,USART1_IRQChannel,2);//组2,最低优先级 
#endif
}
  
int main(void)
{
    u16 i;   
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72);      //延时初始化
 
    uart_init(72,9600); //串口1初始化 
    while(1)
   {
  for(i=0;i<1000;i++)
{
     Send_Char(1);
 
}

  }  
}

开启了复用功能时钟. 可以实现发送功能!以上代码在开发板上验证!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-11-29 11:34:40 | 显示全部楼层
恭喜
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-24 13:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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