_奶咖君_ 发表于 2023-12-20 13:57:16

第十部分,中断优先级。

STC15W单片机有2级中断优先级,到了STC8H、STC8AD4时代已经到了4级,相应的寄存器数量也肯定有所增加。而且越新的单片机功能越强大,增加的新外设也会有对应寄存器修改中断优先级。
STC15W对于中断优先级这里只有两个寄存器,IP IP2 其中IP寄存器可以按位寻址内部的各个位,IP2不能,所以再操作IP2的时候只能对这个寄存器的8位整体赋值。要注意使用 或 与 的方式对需要的位赋值,不能影响其他的位(PS:这个是基操了,,不会的去看陈教授的视频去)


而STC8AD4这里就已经增加到6个寄存器,还不包括LCM接口的、各个IO端口中断优先级(不是传统的外部中断)和DMA的中断优先级。可以从图中看到,对于IP与IP2和STC15W单片机的如出一辙(PS:这个词好像是个贬义词)一脉相承(PS:这个比较好),这样的话如果你是从STC15W换到STC8AD4至少这部分运行不会出问题,只是没有用到新的优先级。而且还多了串口3、串口4的中断优先级


STC8H这里和STC8AD4这里又是一脉相承的关系,在STC8AD4单片机上多了RTC中断的优先级和USB相关的优先级,去掉了PCA的中断优先级(STC8H上拥有更高级的PWM已经完全涵盖了PCA的功能)。除此之外,因为STC8H上有两个独立的PWM定时器,所以在这里关于PWM的中断有所不同。(PS:吐槽一下这个手册的排版,这表格的排版,要是让我们毕设的指导老师看到了肯定要让你再改一版。这一个表格怎么能分页呢?严查你们手册编写人员的学历是不是造假了,开玩笑的😝)




不过就算新增了2级中断优先级,对于之前就存在的寄存器也没有大的变动,也可能是为了用惯了的传统8051单片机的老鸟们的编程体验吧(瞎猜)。不过从开发的角度上说,在原有成型的功能的基础上开发新的功能,是要比重构要简单。

中断优先级是需要精心设计的一个点,一般我会按照重要程度和运行时间做为两个轴分成四个象限,以重要程度为主,运行时间为辅(重要程度指的是某项任务必须正常运行不能偏差,或者运行时不允许被打断,即为重要程度高;运行时间理解就很简单,运行中断服务函数的时间),重要程度高的放到更高的优先级上,运行时间短的放到更高的优先级上。当重要程度与运行时间冲突时,以重要程度为主(即便是运行时间长了,但是这部分代码不允许被打断或者等等原因也要放入更高的优先级中),但是这样势必会影响其他的中断运行,有舍有得。

当然我的这种分类方式并不一定适合别人,还需要按照项目的需求合理的分配中断优先级。如果你的需求对系统的响应程度要求不高,那么我这篇文章就是纯属放屁{:4_166:}

_奶咖君_ 发表于 2023-12-20 17:56:07

第十一部分,GPIO。



妈耶最大的区别我居然最后才想到。不过这里手册里已经介绍的很详细了。


主要的区别是STC15W的IO在上电后都是工作模式都是准双向模式,且默认输出高电平。



而在STC8AD4与STC8H中,除了P3.0与P3.1 ISP的下载引脚是准双向模式外,其余所有的IO在上电之后都是高阻输入模式。端口也是默认输出高电平。


对于端口默认输出高电平这个需要注意一下。当这个端口被配置成推挽模式时会立马输出高电平。若在你的逻辑中这个引脚需要初始化为低电平,需要先将引脚赋0,然后在配置引脚的工作模式。

不仅如此,在STC8系列上还增加了在单片机内部增加了上拉电阻控制、施密特触发器的控制、电平转换速率的控制、IO口驱动电流控制、数字输入使能控制。当然,如果是用到了这些功能可以去手册里对应章节查看,这里就不展开叙述了。(PS:这里就不再吐槽表格了,不是你表格里的文字格式是不是要统一一下啊,,怎么有得左对齐,有的还居中对齐,,唉亏得我没有强迫症)

还要注意的一个点是要注意P5.4引脚的使用。这个脚一个比较特殊的一个引脚。避免使用这个引脚作为一些重要器件的控制引脚吧。




hualuo1987 发表于 2023-12-23 20:23:34

学习😊😊😊😊

_奶咖君_ 发表于 2023-12-26 13:33:52

第十二部分,IIC通讯


从开始用IIC,一直就是用的软件IIC,公司里工程师画PCB时也是按照软件模拟IIC的方式来分配单片机的IO,很少有机会把IO分配到单片机硬件IIC的IO上。

前一段时间拿到了用积分兑换的STC8H8K64U一箭双雕学习板,正好有机会测试一下硬件IIC。移殖好代码,启动!了了几行代码,就可以正常的替换之前的软件模拟IIC的程序。终于可以不用对着示波器、逻辑分析仪去调什么IIC的时序了。然后发现硬件IIC的命令中,可以联动两个步骤,比如发送数据+接收ACK的命令0x0A,接收数据+发送ACK的0x0B,接收数据+发送NACK的命令0x0C。好了代码可以再少几行了。测试完成后就兴冲冲地跑到我画PCB的同事身边,让他再新的使用STC8H8K64U-48脚封装的板子上给预留一路硬件IIC的引脚。现在就等着向唐经理申请的片子啥时候能到了。。好了下面就是对三款单片机的硬件IIC部分的比较。


STC8单片机上新增的内容,,STC15W上没有。而对于这两款STC8单片机来说,从寄存器列表上看,完全一致。从引脚的分配上来说也是完全一致。诶这还有啥好比较的。。。


虽然是没有测试过STC8AD4 单片机的,但我感觉应该问题不大代码可以通用。


zhudean11 发表于 2024-1-19 11:10:46

总结的太好了。学习到了,谢谢分享

飞捷 发表于 2024-3-8 11:02:04

神农鼎 发表于 2023-12-16 14:27
STC15W4K32S4可以跟 STC8G2K64S4-36I-LQFP48/32比较

www.stcai.com

确实是从15F到8G转换,起码引脚和PCA变化不大。。。。

wan123456 发表于 2024-3-12 11:13:17

用哪个看哪个的手册就行了…

_奶咖君_ 发表于 2024-3-12 11:17:03

wan123456 发表于 2024-3-12 11:13
用哪个看哪个的手册就行了…

确实,,
但是我是三个都要用。。{:4_167:}

wan123456 发表于 2024-3-12 11:20:38

_奶咖君_ 发表于 2024-3-12 11:17
确实,,
但是我是三个都要用。。

STC的就这点不好,一个系列的只要是型号不一样就有很多东西有区别,我被坑了很多次才搞明白…所以说用哪个看哪个的手册…

_奶咖君_ 发表于 2024-3-12 14:11:20

wan123456 发表于 2024-3-12 11:20
STC的就这点不好,一个系列的只要是型号不一样就有很多东西有区别,我被坑了很多次才搞明白…所以说用哪 ...

型号不一样 硬件有区别不是很正常的么,,,{:4_194:}
页: 1 2 [3] 4 5 6
查看完整版本: 8H8K64U与8A8K64D4与15W4K48S4的一些区别