STM8 UART和TIM2捕获同时使用时捕获数据异常

2019-07-19 22:01发布

小弟刚学STM8,用的是STM8S208RB, 开发环境是IAR, 使用的内部2M HSI时钟,用TIM2捕获外部方波然后用TIM1 PWM输出没有问题,输入方波频率是多少就输出的多少,但是这个时候只要使用UART,捕获数据就不正常了,不论输入频率怎么变,输出的几乎是一个固定频率值,这时将捕获到的数据通过UART1输出到调试助手,计算捕获到的数据,确实是捕获数据有问题,TIM1 的PWM没问题。单独使用UART1也是没问题的,我看了UART和TIM的时钟,数据手册上时钟树看两者都是单独分开的,不知道什么原因了,望大侠指点一下。

TIM2捕获配置
 void stm8_tim2_capture(void){     TIM2_PSCR  = 0x01;//1us 计数一次          TIM2_ARRH = 0xff;     TIM2_ARRL = 0xff; //最大计数值           TIM2_CNTRH = 0x00;     TIM2_CNTRL = 0x00;          TIM2_CCMR1 = 0x01;//配置通道1为输入          TIM2_CR1 = 0x01;  //启动Tim2 向上计数模式         TIM2_CCER1 = 0x01;//上升沿捕获、使能捕获     TIM2_SR1_CC1IF=0; //清捕获标志位   }
UART1配置
void stm8_uart3(void) {     UART3_BRR2 = 0x00; //9600bps @2M     UART3_BRR1 = 0x0D; //9600bps @2M     UART3_CR3 = 0x00;  //1位停止位,不开启同步模式     UART3_CR2 = 0x2C;  // 使能发送和接收功能,并开启接收中断     UART3_CR1 = 0x00;  //8位数据,不使用奇偶效验,并且使能UART1 }
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
正点原子
1楼-- · 2019-07-20 00:30
 精彩回答 2  元偷偷看……
太平洋冲浪者
2楼-- · 2019-07-20 03:49
回复【2楼】正点原子:
---------------------------------
只有UART开了个接受中断,为了避免中断导致问题,我在调试助手里是没给STM8发数据的,而且全局中断没有打开
正点原子
3楼-- · 2019-07-20 07:45
 精彩回答 2  元偷偷看……
太平洋冲浪者
4楼-- · 2019-07-20 11:15
 精彩回答 2  元偷偷看……
正点原子
5楼-- · 2019-07-20 15:16
回复【5楼】太平洋冲浪者:
---------------------------------
stm8的串口是有单独的波特率发生的,不需要定时器给他提供波特率.
正点原子
6楼-- · 2019-07-20 16:29
给你一个我的输入捕获例程参考下,TIM2_CH2的输入捕获.里面也有串口,相安无事,工作的很好的.

一周热门 更多>