makeflyeasy 发表于 2015-3-18 14:05:42

@小李刀刀 问一个关于串口2不能进入中断的问题。

本帖最后由 makeflyeasy 于 2015-3-18 16:00 编辑

//以下东西全作废!!!!不问了,在IO状态初始化和PCA初始化以后启动串口就没事,原因不知为何。。。。
如图:串口初始化程序,串口2,切换到了P4.6 P4.7:


串口中断程序,理论上来说收到数据后灯会闪一下,持续收到数据时灯会微亮:


主函数,一上电就启动了串口:


相关配置:IO口除PWM相关的口外全部都是准双向,弱上拉。
除了串口中断存在外还有定时器0中断存在,但是串口中断已经被设置为最高优先级

目前能确认的问题:
灯不亮,即没有进入串口中断。
将IMU接到串口助手上来看,确认IMU正常,不断向主控发送数据,外部硬件正常。
IMU的RXD接到了主控的TXD2_2;TXD接到了主控的RXD2_2;
至于为什么不能进入串口中断,原因不明,IMU的串口是正常的,数据是不断都有的,很奇怪。

呵呵,用STCISP的串口助手直接循环发送数据给主控居然还是进不了串口中断,蓝灯一点都不亮。
//以上东西全作废!!!!不问了,在IO状态初始化和PCA初始化以后启动串口就没事,原因不知为何。。。。

//以下东西依然有效
此外,吐槽一下,打广告太***了,不怕****吗?下载一次都弹出这个,真的是除了STC没有哪家公司的下载软件能这么**了。果断删了6.83版换回了6.82D




此外,还有一个问题:
PCA模块可以直接硬件输出最高8位PWM,但是我看范例程序,输出16位PWM居然要用到中断来协助?
我目前串口2中断必须是最高优先级的,其次是定时器0中断,如果再来一个PWM中断这程序就没法弄了,他的优先级是最低的,也就是说必须等定时器0中断完了才能处理PWM的事情,这样就干扰PWM了。
请问怎样能不用中断实现PCA输出10位PWM?

lyg407 发表于 2015-3-18 15:33:17

这。。。。。。

小李非刀 发表于 2015-3-18 20:49:48

IAP15W4K58S4的两路PCA,本来就支持10位硬件PWM的哦,我给你代码。

另外,一般有串口时,我都是先初始化串口,从没由问题的啊。

小李非刀 发表于 2015-3-19 13:22:23

主频超过30MHZ时,会有这个对话框,提醒用户注意:超频了!

makeflyeasy 发表于 2015-3-19 15:03:26

小李非刀 发表于 2015-3-19 13:22
主频超过30MHZ时,会有这个对话框,提醒用户注意:超频了!

我觉得提示固然好,还要输个手机号才能下载就太恶心了,即使输验证码也不是这样搞的啊,这样打广告越打别人越反感,真不知道STC什么时候才能像个大公司一样不玩这种把戏,我个人感觉这样做和深圳那边那些山寨厂商的营销手段如出一辙。

小李非刀 发表于 2015-3-19 21:33:35

makeflyeasy 发表于 2015-3-19 15:03
我觉得提示固然好,还要输个手机号才能下载就太恶心了,即使输验证码也不是这样搞的啊,这样打广告越打别 ...

电话是姚总的,目的是告诉用户,超频了,要注意,由疑问可以打这个电话,由姚总直接提供计数支持,毕竟姚总最IC内部最为了解,会提醒用户要注意的问题。

如果确实需要超频使用,清注意温度不要超过70度,温度越高,速度变慢一点。

makeflyeasy 发表于 2015-3-19 22:01:15

小李非刀 发表于 2015-3-19 21:33
电话是姚总的,目的是告诉用户,超频了,要注意,由疑问可以打这个电话,由姚总直接提供计数支持,毕竟姚 ...

吓死我了,姚总的,真的是姚总的?????



好吧,谈点别的,八轴今晚10点小飞,稳定性已经完全超过小四轴了,摇杆跟随性,稳定性真的只能用屌炸天来形容。八轴的模糊PID那里我仔细调了下,比四轴的模糊PID调得效果好很多。大动作抖动几乎为0,摇杆怎么打四轴怎么飞,角度变换过程中没有一丝抖动。就是那个啥,这个biu二,爽!星期天给你寄一套,性能肯定会让你惊喜。远超商售的那些四轴。

小李非刀 发表于 2015-3-19 22:14:44

{:handshake:}太好了,看是了视频,已经很出色了。

makeflyeasy 发表于 2015-3-19 22:18:54

小李非刀 发表于 2015-3-19 22:14
太好了,看是了视频,已经很出色了。

那个视频的效果和今晚的简直不能比,那个还有点抖动,今晚小飞那真的就是Dji的手感,太稳了,就是这么酸爽。

huaidan2088 发表于 2016-7-15 16:12:49

STC的芯片确实是要上电先初始化IO,不然真的害死人,我用的官方的例程调试串口,串口1没问题,结果串口2怎么调试都是只能发不能收,浪费了两天时间,把硬件换了一遍,软件的每一个字符都检查过,今天突然想起来原来在论坛见过要上电先初始化IO才能使用PWM,没想到串口2也需要先初始化IO才能使用,但是官方例程里却没有初始化。
我现在都把IO初始化做成了一个函数,每个工程的main函数里都使用
void MCU_IO_Init(void)
{
        P0M1 = 0x00;
        P0M0 = 0x00;
   
    P1M1 = 0x00;
        P1M0 = 0x00;
   
    P2M1 = 0x00;
        P2M0 = 0x00;
   
    P3M1 = 0x00;
        P3M0 = 0x00;
   
    P4M1 = 0x00;
        P4M0 = 0x00;
   
    P5M1 = 0x00;
        P5M0 = 0x00;
   
    P6M1 = 0x00;
        P6M0 = 0x00;
   
    P7M1 = 0x00;
        P7M0 = 0x00;
}

小李非刀 发表于 2016-7-18 12:08:42

如果用的是15W4K系列,由于6路PWM相关的12个输出IO上电时是高阻,所以,要初始化一下。
为了通用,可以把所有IO口都初始化一下。
我对资源的初始化,从来不管上电默认,都自己初始化。这是个好习惯,当你同时用着各家的MCU时就知道了。
页: [1]
查看完整版本: @小李刀刀 问一个关于串口2不能进入中断的问题。