小弟刚学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
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
只有UART开了个接受中断,为了避免中断导致问题,我在调试助手里是没给STM8发数据的,而且全局中断没有打开
---------------------------------
stm8的串口是有单独的波特率发生的,不需要定时器给他提供波特率.
一周热门 更多>