关于STC15W系列串口开发的踩坑

关于STC15W系列的串口开发

整体来说难度不大,但是存在非常多的细节,稍不留意就会踩坑,故此记录。

  1. 该系列单片机只有1个串口(串口1),可以映射到三组引脚上,形成三个伪独立串口

    1. 在发送上,和真正的三个串口区别不大,因为只是一个单线程的MCU,只需要每次发送时,切换 AUXR1寄存器的状态
    2. 在接收上,因为实际上只有一个串口,只能使用一个串口中断,当映射到引脚组A时,来自组B的数据将无法触发串口接收中断。
    3. 此外,串口需要接收的数据,往往不止一个字节,因此需要用到信号量(互斥锁),来保证一个数据包的完整接收。
  2. 该系列只有定时器0和定时器2(还有三个严格来算不是定时器)
    实际上可用于串口的定时器只有T2
    因此,在配置串口时,如果使用了定时器1,则无论如何都不可能成功。

  3. 不要在串口接收中断里使用串口发送功能
    这一行为极其容易使代码陷入死循环

  4. 这是一个意外的bug:一旦给串口下载器断电,MCU会自动发送串口数据

我的两个按键接在了P30和P31上,且程序要求按下时(低电平),向串口发送数据
当下载器断电,但是没有从P30和P31断开,MCU就会检测到低电平,然后一直发送数据
难绷

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值