[STM8] 接收到的数据不正确

[复制链接]
 楼主| yinxiangh 发表于 2021-3-1 22:55 | 显示全部楼层 |阅读模式
用stm8s103f3p6做红外,用的TIM2-CH2 输出PWM 38KHz载波,用UART输出数据,现在接收到的数据不正确,不知道怎么回事
spark周 发表于 2021-3-1 22:59 | 显示全部楼层

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因
凯复Kane 发表于 2021-3-1 23:00 | 显示全部楼层
可能有很多原因 至也把错误报告贴出来
 楼主| yinxiangh 发表于 2021-3-1 23:02 | 显示全部楼层
void pwm38k(void)
{
  CLK->CKDIVR=0x00;  //fCPU = fMASTER
  TIM2->CR1=0x00;    // 关闭定时器
  
  TIM2->CCMR2=0x70;   // 设置TIM2通道2为PMW2模式,计数器小于比较值为有效电平
  
  TIM2->CCER1=0x32; // 高电平有效,捕获在上升沿
  
  TIM2->PSCR=0x01;  //计数器计数频率为16M/2^0=8Mhz,即每0.125us/2计数一次
  
  TIM2->CNTRH=0x00; // 计数初值
  TIM2->CNTRL=0xd1;
  
  TIM2->ARRH=0x00; //
  TIM2->ARRL=0xd1;
  
  TIM2->CCR2H=0;        //比较值,确定占空比
  TIM2->CCR2L=21;   
     
  TIM2->IER=0x00;     //关闭中断
  TIM2->CR1=0x01;    //开启定时器
}

void Uart_Init(void)
{
  UART1_DeInit();
  UART1_Init((u32)1200, UART1_WORDLENGTH_8D,UART1_STOPBITS_1,UART1_PARITY_EVEN,UART1_SYNCMODE_CLOCK_DISABLE,UART1_MODE_TXRX_ENABLE);
   UART1_ITConfig(UART1_IT_RXNE, ENABLE);
  UART1_Cmd(ENABLE);
}
int main( void )
{
  
  /* Infinite loop */
  
  /*设置内部时钟16M为主时钟*/

  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
  CLK_PeripheralClockConfig(CLK_PERIPHERAL_UART1, ENABLE);
  CLK_HSICmd(ENABLE);
  Uart_Init();
pwm38k();
  unsigned char c=0x55;
  while(1)
  {
    while(!(UART1->SR&0X80));   
    UART1_SendData8(c);
//   c++;
    while(!(UART1->SR&0X40));
}
zhenykun 发表于 2021-3-1 23:04 | 显示全部楼层
初涉STM8,导师这学期交给我了类似的任务,不知道你最后解决问题了吗?我老板让我实现:单片机串口输入5-10个字节数据(10-20个16进制数),单片机把该数据按照9600波特率,8位数据位,无校验,1位停止位做180KHz的载波调制输出(有180KHz载波代表“0”,无载波代表“1”),我实在是不会写代码,能不能分享给我你的代码?
 楼主| yinxiangh 发表于 2021-3-1 23:07 | 显示全部楼层

唉,还是没有什么结果,算了,多谢大家啦
Jobs的梨子 发表于 2021-3-1 23:09 | 显示全部楼层
你所说的不正确是接受不到 还是有偏差
x史可法 发表于 2021-3-2 23:40 | 显示全部楼层
楼主回答一下问题吧 谢谢啦
磨砂 发表于 2021-4-1 09:06 | 显示全部楼层
请贴一下错误报告
晓伍 发表于 2021-4-1 09:15 | 显示全部楼层
不正确是接受不到 还是有偏差
您需要登录后才可以回帖 登录 | 注册

本版积分规则

723

主题

7134

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

723

主题

7134

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部