zhuyshuang 发表于 2021-7-10 19:29:55

STC16F40K128或keil C251V260问题记录

        先说说我们的发现了,猜测是keil C251V560这个编译器的问题。目前摸索出了一个比较有效的解决办法,就是把变量都放进结构体里面,并且一个c文件只支持一个结构体定义。

        简单说说问题吧,今年一月份开始调试这个芯片,遇到了很多奇怪的问题,比如代码一多开机就自动复位;比如变量一多程序大概率跑飞,有时用data idata修饰就正常;比如我一个oled显示字符串语句已经注释了,实际上屏幕上还是有显示等等的。就像下图这个情况,那个“Enter short press”是被注释掉了的。
        另外再记录一个平衡自行车调试中的没啥用的简单发现,跟陀螺仪的选用有关。就是,同样单级PID控制,用龙邱的mpu6050,我只要一个简单的PD就可以让车很稳的走直线和画圆了。用自己做的一阶互补滤波,给加速度计的信任度差不多0.001才能平衡,画圆抖。用买的比较贵的串口陀螺仪,调的比较好的PID,车可以不倒,但是随机左右画圈,然后维持稳定。这个串口陀螺仪调的,应该是比较真实的。
        问问坛友们有没有遇到过类似的问题,有什么要注意的,以上。

john78 发表于 2021-7-11 08:30:34

STC16样品?,文档说ⅩRAM有坑

zhuyshuang 发表于 2021-7-11 22:53:31

john78 发表于 2021-7-11 08:30
STC16样品?,文档说ⅩRAM有坑

对的,去年12月份申请的样片,断断续续用到了现在。
文档,就参考着数据手册,整了个简单的库。我可能没看仔细,没发现相关描述。
相比之下,pin-to-pin的STC8H8K64U就没有这种烦恼,而且换个头文件就可以直接用

kundi 发表于 2021-7-12 14:22:55

我还发现这个中断程序不能写太长,之前用在STC8的一个较长的中断程序(既有串口字符串接收,也有字符串的判断和执行响应子函数),移植到STC16这里就容易跑飞,在中断函数里面只保留串口字符串接收就没有问题了,字符串判断和执行就放在在while(1)大循环里面。

小李非刀 发表于 2021-7-19 21:20:30

楼主,去年开始我用STC16座了不少验证,目前没发现什么问题。样品最高抛30MHz,最好抛28MHz以下。我主要验证各种计算,比如FFT频谱、8阶数字滤波器、四轴飞控等等,速度杠杠的。

kundi 发表于 2021-7-19 21:29:53

小李非刀 发表于 2021-7-19 21:20
楼主,去年开始我用STC16座了不少验证,目前没发现什么问题。样品最高抛30MHz,最好抛28MHz以下。我主要验 ...

我用STC16目前最高跑到32.0MHZ没有问题,33.0就不行。
页: [1]
查看完整版本: STC16F40K128或keil C251V260问题记录