OpenEdv-开源电子网

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

定时器和串口中断使能和禁止问题

[复制链接]

21

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
139
金钱
139
注册时间
2013-11-16
在线时间
0 小时
发表于 2014-2-18 15:35:55 | 显示全部楼层 |阅读模式
现在想将51单片机编写的程序移植到STM32开发环境下面去,移植过程中遇到定时器以及串口中断配置问题
请各位指点:

void uart3_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<<3;   //使能PORTB口时钟 

         RCC->APB1ENR|=1<<18;  //使能串口时钟

         GPIOB->CRH&=0XFFFF00FF;

         GPIOB->CRH|=0X00008B00;//IO状态设置

                    

         RCC->APB1RSTR|=1<<18;   //复位串口1

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

         //波特率设置

        USART3->BRR=mantissa; // 波特率设置     

         USART3->CR1|=0X200C;  //1位停止,无校验位.

#ifdef EN_USART3_RX                //如果使能了接收

         //使能接收中断

        USART3->CR1&=0xFFFB;    //接收缓冲区非空中断使能 

         USART3->CR1|=1<<5;    //接收缓冲区非空中断使能                                

         MY_NVIC_Init(1,1,USART3_IRQChannel,2);//2,最低优先级

#endif

}

                 请问下面两条语句配置的对吗?

          USART3->CR1|=0x0004;串口3接收中断使能

          USART3->CR1&=0xFFFB; 串口3接收中断禁止

void WaitForACKTimer_Init(u16 arr,u16 psc)

{

         RCC->APB1ENR|=1<<2;//TIM4时钟使能   

        TIM4->ARR=arr;  //设定计数器自动重装值//刚好1ms   

         TIM4->SC=psc;  //预分频器7200,得到10Khz的计数时钟

         //这两个东东要同时设置才可以使用中断

         TIM4->DIER|=1<<0;   //允许更新中断                                   

//      TIM4->DIER|=1<<6;   //允许触发中断          

         TIM4->CR1&=0xFFFE;    //使能定时器3

       MY_NVIC_Init(2,2,TIM4_IRQChannel,2);//抢占1,子优先级3,组2                                                                                  

}

 

 请问下面两条语句配置的对吗?
       TIM4->CR1&=0xFFFE;     
禁止定时器4

TIM4->CR1|=0x0001;      使能定时器4  
 
其余代码全部移植,就是要配置串口和中断,我怀疑是这两个地方的问题,用什么办法测试一下定时器和串口配置正确呢?请高手指点 ,谢谢

 

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

使用道具 举报

39

主题

2026

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2020
金钱
2020
注册时间
2013-5-1
在线时间
87 小时
发表于 2014-2-18 15:56:17 | 显示全部楼层
前两句是控制接收使能,后两句对的。

你可以定时1s给电脑发送数据,就把两个都测了~
博观而约取,厚积而薄发。
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-2-18 16:47:07 | 显示全部楼层
回复【楼主位】zhengxiaoxia:
---------------------------------
按照1楼的方法试下
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-6 07:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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