用了一次N76E003,和STM8S003相比,说下我的感受

2020-01-12 17:23发布

本帖最后由 zqf441775525 于 2017-7-25 16:35 编辑

在一个小项目上用了一次N76E003,因为N76E003是和STM8S003同价位的,就只比较这2个片子。
跟STM8S003相比起来各有千秋,就Flash大小方面来说,18K,比STM8S003大多了,Demo程序也很全。但是和STM8S003相比有以下缺点:

1、外部时钟引脚,只有OSC_IN,没有OSC_OUT,那么如果使用外部OSC,估计只能使用有源晶振。
2、GPIO可以设置成准双向口,没有上拉输入模式,而且,如果要使用GPIO的外部中断,还必须把GPIO设置成输入模式,不能设置成“准双向口”,这样问题来了:如果要使用外部中断,那么这个中断脚必须要加外部上拉电阻。
3、使用NU-LINK在线调试,下载速度很慢,我用的keil9.1,大约7K的程序,点击完“Debug”按钮以后,程序进行“擦除”,“下载”,“校验”等操作,要差不多20S才能搞定,进入Debug界面。相同程序量的STM8,用IAR,大约2S就可以进入调试界面了。
4、虽说比STM8多一个IO口,但其实是多了半个IO口,RST引脚作用IO口使用的时候,只能作为输入口。而且,NULINK调试需要3根线(SCLK,SDA,RST),STM8调试只需要2根线(RST,SWIM),无形之中就比STM8少一个IO口了。就调试方便性来说,跟STM8还差的远。
5、SPI接口,N76E003没有“单线仅输出”模式,也就是说,只要用了硬件SPI,SCK、MOSI、MISO这3个脚就必须复用成SPI引脚,在有些场合(比如要驱动SPI显示屏,只需要SCK和MOSI,不需要MISO),那么MISO这个引脚就浪费掉了。


以上5点缺陷也许有我自身的原因,没有设置好,或者没有找到设置的地方。请用过这个片子的来说说,交流一下。

编辑原因:添加以下说明
说明:上述第2点,关于GPIO的中断,设置成准双向口后,可以进入中断,是我之前测试不全面,不是N76E003的缺陷。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
99条回答
zqf441775525
2020-01-23 11:30
我用例程做输入捕获,结果没成功,我把那个引脚接地了,结果还是进入中断了,一直在发数据,但是数据全是0x00,接入信号,数据也一直是0x00;
unsigned char i,j;
/************************************************************************************************************
*    Timer2 Capture interrupt subroutine
************************************************************************************************************/
void Capture_ISR (void) interrupt 12
{       
  clr_CAPF0;                          // clear capture0 interrupt flag
  i = C0L;                                                                                                                // For capture mode CxL/CxH with data capture from I/O pin
  j = C0H;                                                                                                               
  P12 = ~P12;                                                                                                        //toggle GPIO1 to show int
        Send_Data_To_UART0(0xFF);
        Send_Data_To_UART0(i);
  Send_Data_To_UART0(j);
        //printf(" TM2 CAP");
//        clr_TF2;
//        clr_CAPF0;                          // clear capture0 interrupt flag
}
/************************************************************************************************************
*    Main function
************************************************************************************************************/
void main (void)
{
        InitialUART0_Timer3(115200);
        P00_Input_Mode;
        TIMER2_DIV_16;
        TIMER2_Compare_Capture_Mode;
        IC3_P00_CAP0_BothEdge_Capture;       
  set_ET2;                                    //Enable Timer2 interrupt
  set_ECAP;                                   //Enable Capture interrupt
  set_TR2;                                    //Triger Timer2
  set_EA;  
  while(1);
}

一周热门 更多>