STM8 调试总结

简单记录一下:

1,uart  串口接收中断函数分析:

/* 接收的数据包以 0x55 开头 ,以0xFF 结尾,长度固定为11个字节*/

下面是 STM8 uart 接收中断函数,是最普通的串口中断,串口接收到一个字节 数据就产生一个中断。

1,每次中断进来 ,就从 USARTx->DR 寄存器中取出一个字节保存至缓存中

2,当收到 0xFF 的字符时 ,判断一下是否是数据包的结尾(只有定长数据包才可以采用这种方式处理)


void irq_uart1()
{
  uint8_t temp = USART_ReceiveData8(USART1);
  uart_rx_buffer[uart_rx_len] = temp;
  if (++uart_rx_len >= UART_BUFFER_SIZE)
            uart_rx_len = 0;
  
  if (temp == PACKAGE_END) {
            if (uart_rx_len >= sizeof(recv_buffer)) {
                      if (uart_rx_buffer[uart_rx_len - sizeof(recv_buffer)] == PACKAGE_START) {
                                memcpy(&recv_buffer, uart_rx_buffer + uart_rx_len - sizeof(recv_buffer),sizeof(recv_buffer));    
                                flag_reply = 1;          
                      }
                      uart_rx_len = 0;
            }
  }  
}

2,串口发送正常,但是接收数据不进接收中断的问题。

     因为uart  初始化之前 ,这 RX ,TX 这两个引脚被 初始化为GPIO 输出口了。

     这里我有疑问,uart 初始化的库函数,不应该把把这两个引脚 从新初始化为 串口的功能脚吗?总之,把 RX ,TX 这两个引脚被 初始化为GPIO 输出口的代码屏蔽掉 就能进串口接收中断了。

3,烧录出现概率性烧录不了的问题。

     烧录口 的 SWIM 脚 和 RESET 脚(PA0 和PA1 ) 被初始化为 GPIO 输出口导致的。

另外附一个 STM32 muc 的开发资源下载连接的 网页:

MDK5.29,5.30,5.31,5.32,5.33, 5.34,5.35, 5.36, 5.37和各种pack软件包镜像下载(2022-05-04) - 知乎 (zhihu.com)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮特石马龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值