OpenEdv-开源电子网

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

stm32 寄存器直接操作usart3的中断进不去啊,附代码,求指导

[复制链接]

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2012-7-24
在线时间
0 小时
发表于 2012-8-1 18:23:41 | 显示全部楼层 |阅读模式
 我的代码附上。求大牛给看看寄存器的设置的问题,那些地方不对导致usart3的中断进不去啊!!!!!
说明:时钟的设置为32M,波特率为115200,求解释啊。。。。。。
/*********************************************************************
/ Function Name : uart3_init() //此串口用于同ZigBee通信
/ Description : 串口3的初始化
/ InPut : pclk1,bound //pclk1(时钟频率MHz)用于串口3
/ OutPut : None
/ Return : None
*********************************************************************/
void uart3_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<<3; //使能PORTB口时钟
RCC->APB1ENR|=1<<18; //使能串口3时钟
GPIOB->CRH&=0XFFFF00FF; //PB10为txd,PB11为rxd
GPIOB->CRH|=0X00001E00; //IO状态设置

RCC->APB1RSTR|=1<<18; //复位串口3
RCC->APB1RSTR&=~(1<<18); //停止复位

USART3->BRR=mantissa; // 波特率设置
USART3->CR1|=0X200C; //1位停止,无校验位.
//使能接收中断
#ifdef EN_USART3_RX //如果使能了接收
USART3->CR1|=1<<8; //PE中断使能
USART3->CR1|=1<<5; //接收缓冲区非空中断使能
MY_NVIC_Init(3,3,USART3_IRQChannel,0); //组0
#endif
}
就解释啊????求帮助。。。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-8-1 18:26:12 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2012-7-24
在线时间
0 小时
 楼主| 发表于 2012-8-1 19:06:44 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
#ifdef EN_USART3_RX                                          //如果使能了接收
u8 USART3_RX_BUF[16];                                     //接收缓冲,最大16个字节.
u8 RecZigBeeNum=0; //从Zigbee接收的数据个数加1
u8 ZigBee_ID;             //从ZigBee接收的帧的ID

/*************************************************************
/ Function Name: USART3_IRQHandler()
/ Description: 设置串口3的中断函数主要用于接收字节
/ InPut      : None
/ OutPut     : None 
/ Return : None
/ Note       : By linxiang
*************************************************************/
void USART3_IRQHandler(void)
{
// u8 i=0,t=0;
if(USART3->SR&(1<<5))                                    //接收到数据
{
// USART3_RX_BUF[RecZigBeeNum]=USART3->DR;   //转存数据
      RecZigBeeNum++;   //接收到的数据个数加1
// if(RecZigBeeNum==1)  //如果只接收了一个字节
// {
// if(USART3_RX_BUF[RecZigBeeNum-1]!=0xEB)  //判断该字节是否为0xEB
// {
// for(i=0;i<16;i++)
// {
// USART3_RX_BUF=0;  //丢弃帧内容
// }
// RecZigBeeNum=0;  //重新计数收到的字节个数
// }
// }
//        if(RecZigBeeNum==2)  //如果已经接到两个字节
// {
// if(USART3_RX_BUF[RecZigBeeNum-1]!=0x90)  //判断该字节是否为0x90
// {
// for(t=0;t<16;t++)
// {
// USART3_RX_BUF[t]=0;  //丢弃帧内容
// }
// RecZigBeeNum=0;  //重新计数收到的字节个数
// }
// // TIM2->CR1|=1;  //使能定时器timer2
// }
// if(RecZigBeeNum>=3&&RecZigBeeNum<=15)  //已经接到同步码
// {
//      if(RecZigBeeNum==3)  //取出帧ID
//  {
//     ZigBee_ID=USART3_RX_BUF[RecZigBeeNum-1];
//  }
// //  temp^=USART3_RX_BUF[RecZigBeeNum-1];  //依次对第3个字节至第15个字节求异或
}
if(RecZigBeeNum==16)
{
// if(temp==USART3_RX_BUF[RecZigBeeNum-1])  //校验和完成
// {
// RecZigBeeNum=0;  //计数清零
// temp=0;  //异或清零
// }
// else  //校验和不对
// {
RecZigBeeNum=0;
// temp=0;
// USART3_RX_BUF[16]=0;  //舍弃帧内容
// }
// }
}  

#endif

里面有些是自己定义的帧协议,关键是这个中断进不去?
回复 支持 反对

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2012-7-24
在线时间
0 小时
 楼主| 发表于 2012-8-1 19:07:30 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
注释掉是为了测试的。。。就直接给您粘锅来的。。。。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-8-1 19:51:50 | 显示全部楼层
MY_NVIC_Init(3,3,USART3_IRQChannel,0); //组0 
改为:
MY_NVIC_Init(3,3,USART3_IRQChannel,2); //组0 


GPIOB->CRH&=0XFFFF00FF; //PB10为txd,PB11为rxd
GPIOB->CRH|=0X00001E00; //IO状态设置 
改为如下: 
GPIOB->CRH&=0XFFFF00FF; //PB10为txd,PB11为rxd
GPIOB->CRH|=0X00008B00; //IO状态设置 
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2012-7-24
在线时间
0 小时
 楼主| 发表于 2012-8-1 20:04:23 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
谢谢。。。。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 02:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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