打印
[技术问答]

N76E003 IO口问题!求解答

[复制链接]
5490|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
N76E003 的开发板。 可是在使用的时候P0.2和P1.6引脚就是无法输出,我也找到相关的寄存器配置啥的。 烧例程进去也是无法输出,作为串口1的时候,也无输出。 哪位大牛知道这两个IO怎么配置啊?
来自 2楼
Lanchel|  楼主 | 2017-4-10 18:34 | 只看该作者
已找到原因:
    OCD 片上调试功能。 就相当于是仿真一样,所以在插着Nu—link的时候,就是你程序下载完了之后如果不拔插一下电源就会默认一直在OCD的模式,这时候P0.2与P1.6引脚是不作为正常IO功能的。所以解决的方式就是用NU_link下载完成之后,拔插一下电源重新上电(按复位键是不行的)。至于用ICP工具配置,应该都是没有问题的,这个配置软件很好用。

使用特权

评论回复
板凳
yiyigirl2014| | 2017-4-7 11:43 | 只看该作者
只能看例程,没这个开发板啊。。多少钱买的?

使用特权

评论回复
地板
Lanchel|  楼主 | 2017-4-7 11:45 | 只看该作者
yiyigirl2014 发表于 2017-4-7 11:43
只能看例程,没这个开发板啊。。多少钱买的?

淘宝看到 150 那个黑色的

使用特权

评论回复
5
Lanchel|  楼主 | 2017-4-7 11:46 | 只看该作者
我找到原因了  是由于板子的OCD功能限制了这两个引脚,所以要关闭OCD功能引脚才能正常使用。但现在的问题是不会关OCD。。

使用特权

评论回复
6
yiyigirl2014| | 2017-4-7 13:10 | 只看该作者
那就是板子设计的没有找到关闭的地方了。

使用特权

评论回复
7
yiyigirl2014| | 2017-4-7 13:50 | 只看该作者
OCD是什么,查不到啊

使用特权

评论回复
8
Lanchel|  楼主 | 2017-4-7 13:55 | 只看该作者
yiyigirl2014 发表于 2017-4-7 13:50
OCD是什么,查不到啊

N76E003内嵌片上调试功能(OCD),这为软件开发者提供了低成本调试方法,并且N76E003的每一种封装都适用。OCD具有完整的调试程序控制流程,包括8个硬件断点、单步运行、全速运行和非侵入命令的内存访问。OCD系统并不占用任何本地内存,也不和片上外设共享资源。
当OCDEN (CONFIG0.4)配置为0,LOCK (CONFIG0.1)为1时,OCD才能有效。如果芯片已加密,OCD就不能工作。OCD系统使用两线串行接口,OCDDA 和 OCDCK,让目标设备和调试控制器建立通讯。OCDDA是输入/输出引脚,调试时用作数据传输,OCDCK是输入口,调试时传输数据同步用的时钟。P2.0/ ̅̅̅̅̅引脚也是必不可少的,它是用来控制OCD模式进入和退出的。N76E003的OCD和ICP功能是共用这3个引脚。

使用特权

评论回复
9
yiyigirl2014| | 2017-4-7 14:42 | 只看该作者
那么开启关闭就应该是在系统初始化的代码里设置那个功能了。多功能的引脚一般都需要在系统初始化阶段进行配置。

使用特权

评论回复
10
mcuzhuanyong| | 2017-4-7 16:06 | 只看该作者
可以关闭OCD  在ICP工具中,配置中关闭

使用特权

评论回复
11
Lanchel|  楼主 | 2017-4-7 16:39 | 只看该作者
mcuzhuanyong 发表于 2017-4-7 16:06
可以关闭OCD  在ICP工具中,配置中关闭

嗯 是的。 我用了这个NuMicro_ICP_Programming_Tool的工具,然后根据用户手册中的配置,显示已经刷新成功了,但是结果却是那两个IO依然不能用,不知道是哪里刷的有问题了。 但是我这样刷看门狗的配置是成功的,成功关闭了看门狗。 很纳闷。

使用特权

评论回复
12
mcuzhuanyong| | 2017-4-7 16:49 | 只看该作者
Lanchel 发表于 2017-4-7 16:39
嗯 是的。 我用了这个NuMicro_ICP_Programming_Tool的工具,然后根据用户手册中的配置,显示已经刷新成功 ...

在这个地方取消OCD ,然后回到原来界面,更新配置处打勾,烧录完成后,一定要重新上下电

QQ截图20170407164719.jpg (132.27 KB )

QQ截图20170407164719.jpg

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
zhuomuniao110 + 3 很给力!
13
Lanchel|  楼主 | 2017-4-7 17:27 | 只看该作者
mcuzhuanyong 发表于 2017-4-7 16:49
在这个地方取消OCD ,然后回到原来界面,更新配置处打勾,烧录完成后,一定要重新上下电 ...

按照你这这个配 烧进去结果还是不行。。。。

使用特权

评论回复
14
rwbycc| | 2017-4-7 18:50 | 只看该作者
P0.2和P1.6有没有设置成准双向模式

使用特权

评论回复
15
Lanchel|  楼主 | 2017-4-7 20:23 | 只看该作者
rwbycc 发表于 2017-4-7 18:50
P0.2和P1.6有没有设置成准双向模式

有的。 可是还是不行,会不会还有什么寄存器需要再配置?

使用特权

评论回复
16
rwbycc| | 2017-4-8 09:59 | 只看该作者
Lanchel 发表于 2017-4-7 20:23
有的。 可是还是不行,会不会还有什么寄存器需要再配置?

P1.6和P0.2作为串口时必须先置1

使用特权

评论回复
17
zhuomuniao110| | 2017-4-8 11:13 | 只看该作者
mcuzhuanyong 发表于 2017-4-7 16:49
在这个地方取消OCD ,然后回到原来界面,更新配置处打勾,烧录完成后,一定要重新上下电 ...

给力,第一次知道在这配置。

使用特权

评论回复
18
qwe12377yu| | 2017-4-13 11:06 | 只看该作者
这个能通过代码来禁用,我尝试了,还是不行啊,哪个大神成功的配置了

使用特权

评论回复
19
zhuotuzi| | 2017-4-13 21:20 | 只看该作者
有个例程不知道靠谱不
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2016 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

//***********************************************************************************************************
//  Nuvoton Technoledge Corp.
//  Website: http://www.nuvoton.com
//  E-Mail : MicroC-8bit@nuvoton.com
//  Date   : Apr/21/2016
//***********************************************************************************************************

//***********************************************************************************************************
//  File Function: N76E003 GPIO demo code
//***********************************************************************************************************

#include <stdio.h>
#include "N76E003.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_Define.h"


//*****************  The Following is in define in Fucntion_define.h  ***************************
//****** Always include Function_define.h call the define you want, detail see main(void) *******
//***********************************************************************************************
#if 0
////------------------- Define Port as Quasi mode  -------------------
//#define P00_Quasi_Mode                                P0M1&=~SET_BIT0;P0M2&=~SET_BIT0
//#define P01_Quasi_Mode                                P0M1&=~SET_BIT1;P0M2&=~SET_BIT1
//#define P02_Quasi_Mode                                P0M1&=~SET_BIT2;P0M2&=~SET_BIT2
//#define P03_Quasi_Mode                                P0M1&=~SET_BIT3;P0M2&=~SET_BIT3
//#define P04_Quasi_Mode                                P0M1&=~SET_BIT4;P0M2&=~SET_BIT4
//#define P05_Quasi_Mode                                P0M1&=~SET_BIT5;P0M2&=~SET_BIT5
//#define P06_Quasi_Mode                                P0M1&=~SET_BIT6;P0M2&=~SET_BIT6
//#define P07_Quasi_Mode                                P0M1&=~SET_BIT7;P0M2&=~SET_BIT7
//#define P10_Quasi_Mode                                P1M1&=~SET_BIT0;P1M2&=~SET_BIT0
//#define P11_Quasi_Mode                                P1M1&=~SET_BIT1;P1M2&=~SET_BIT1
//#define P12_Quasi_Mode                                P1M1&=~SET_BIT2;P1M2&=~SET_BIT2
//#define P13_Quasi_Mode                                P1M1&=~SET_BIT3;P1M2&=~SET_BIT3
//#define P14_Quasi_Mode                                P1M1&=~SET_BIT4;P1M2&=~SET_BIT4
//#define P15_Quasi_Mode                                P1M1&=~SET_BIT5;P1M2&=~SET_BIT5
//#define P16_Quasi_Mode                                P1M1&=~SET_BIT6;P1M2&=~SET_BIT6
//#define P17_Quasi_Mode                                P1M1&=~SET_BIT7;P1M2&=~SET_BIT7
//#define P20_Quasi_Mode                                P2M1&=~SET_BIT0;P2M2&=~SET_BIT0
//#define P30_Quasi_Mode                                P3M1&=~SET_BIT0;P3M2&=~SET_BIT0
////------------------- Define Port as Push Pull mode -------------------
//#define P00_PushPull_Mode                        P0M1|=SET_BIT0;P0M2&=~SET_BIT0
//#define P01_PushPull_Mode                        P0M1|=SET_BIT1;P0M2&=~SET_BIT1
//#define P02_PushPull_Mode                        P0M1&=~SET_BIT2;P0M2|=SET_BIT2
//#define P03_PushPull_Mode                        P0M1&=~SET_BIT3;P0M2|=SET_BIT3
//#define P04_PushPull_Mode                        P0M1&=~SET_BIT4;P0M2|=SET_BIT4
//#define P05_PushPull_Mode                        P0M1&=~SET_BIT5;P0M2|=SET_BIT5
//#define P06_PushPull_Mode                        P0M1&=~SET_BIT6;P0M2|=SET_BIT6
//#define P07_PushPull_Mode                        P0M1&=~SET_BIT7;P0M2|=SET_BIT7
//#define P10_PushPull_Mode                        P1M1&=~SET_BIT0;P1M2|=SET_BIT0
//#define P11_PushPull_Mode                        P1M1&=~SET_BIT1;P1M2|=SET_BIT1
//#define P12_PushPull_Mode                        P1M1&=~SET_BIT2;P1M2|=SET_BIT2
//#define P13_PushPull_Mode                        P1M1&=~SET_BIT3;P1M2|=SET_BIT3
//#define P14_PushPull_Mode                        P1M1&=~SET_BIT4;P1M2|=SET_BIT4
//#define P15_PushPull_Mode                        P1M1&=~SET_BIT5;P1M2|=SET_BIT5
//#define P16_PushPull_Mode                        P1M1&=~SET_BIT6;P1M2|=SET_BIT6
//#define P17_PushPull_Mode                        P1M1&=~SET_BIT7;P1M2|=SET_BIT7
//#define P20_PushPull_Mode                        P2M1&=~SET_BIT0;P2M2|=SET_BIT0
//#define P30_PushPull_Mode                        P3M1&=~SET_BIT0;P3M2|=SET_BIT0
////------------------- Define Port as Input Only mode -------------------
//#define P00_Input_Mode                                P0M1|=SET_BIT0;P0M2&=~SET_BIT0
//#define P01_Input_Mode                                P0M1|=SET_BIT1;P0M2&=~SET_BIT1
//#define P02_Input_Mode                                P0M1|=SET_BIT2;P0M2&=~SET_BIT2
//#define P03_Input_Mode                                P0M1|=SET_BIT3;P0M2&=~SET_BIT3
//#define P04_Input_Mode                                P0M1|=SET_BIT4;P0M2&=~SET_BIT4
//#define P05_Input_Mode                                P0M1|=SET_BIT5;P0M2&=~SET_BIT5
//#define P06_Input_Mode                                P0M1|=SET_BIT6;P0M2&=~SET_BIT6
//#define P07_Input_Mode                                P0M1|=SET_BIT7;P0M2&=~SET_BIT7
//#define P10_Input_Mode                                P1M1|=SET_BIT0;P1M2&=~SET_BIT0
//#define P11_Input_Mode                                P1M1|=SET_BIT1;P1M2&=~SET_BIT1
//#define P12_Input_Mode                                P1M1|=SET_BIT2;P1M2&=~SET_BIT2
//#define P13_Input_Mode                                P1M1|=SET_BIT3;P1M2&=~SET_BIT3
//#define P14_Input_Mode                                P1M1|=SET_BIT4;P1M2&=~SET_BIT4
//#define P15_Input_Mode                                P1M1|=SET_BIT5;P1M2&=~SET_BIT5
//#define P16_Input_Mode                                P1M1|=SET_BIT6;P1M2&=~SET_BIT6
//#define P17_Input_Mode                                P1M1|=SET_BIT7;P1M2&=~SET_BIT7
//#define P20_Input_Mode                                P2M1|=SET_BIT0;P2M2&=~SET_BIT0
//#define P30_Input_Mode                                P3M1|=SET_BIT0;P3M2&=~SET_BIT0
////-------------------Define Port as Open Drain mode -------------------
//#define P00_OpenDrain_Mode                P0M1|=SET_BIT0;P0M2|=SET_BIT0
//#define P01_OpenDrain_Mode                P0M1|=SET_BIT1;P0M2|=SET_BIT1
//#define P02_OpenDrain_Mode                P0M1|=SET_BIT2;P0M2|=SET_BIT2
//#define P03_OpenDrain_Mode                P0M1|=SET_BIT3;P0M2|=SET_BIT3
//#define P04_OpenDrain_Mode                P0M1|=SET_BIT4;P0M2|=SET_BIT4
//#define P05_OpenDrain_Mode                P0M1|=SET_BIT5;P0M2|=SET_BIT5
//#define P06_OpenDrain_Mode                P0M1|=SET_BIT6;P0M2|=SET_BIT6
//#define P07_OpenDrain_Mode                P0M1|=SET_BIT7;P0M2|=SET_BIT7
//#define P10_OpenDrain_Mode                P1M1|=SET_BIT0;P1M2|=SET_BIT0
//#define P11_OpenDrain_Mode                P1M1|=SET_BIT1;P1M2|=SET_BIT1
//#define P12_OpenDrain_Mode                P1M1|=SET_BIT2;P1M2|=SET_BIT2
//#define P13_OpenDrain_Mode                P1M1|=SET_BIT3;P1M2|=SET_BIT3
//#define P14_OpenDrain_Mode                P1M1|=SET_BIT4;P1M2|=SET_BIT4
//#define P15_OpenDrain_Mode                P1M1|=SET_BIT5;P1M2|=SET_BIT5
//#define P16_OpenDrain_Mode                P1M1|=SET_BIT6;P1M2|=SET_BIT6
//#define P17_OpenDrain_Mode                P1M1|=SET_BIT7;P1M2|=SET_BIT7
//#define P20_OpenDrain_Mode                P2M1|=SET_BIT0;P2M2|=SET_BIT0
//#define P30_OpenDrain_Mode                P3M1|=SET_BIT0;P3M2|=SET_BIT0
////--------- Define all port as quasi mode ---------
//#define Set_All_GPIO_Quasi_Mode                        P0M1=0;P0M1=0;P1M1=0;P1M2=0;P2M1=0;P2M2=0;P3M1=0;P3M2=0
#endif

/*------------------------------------------------
The main C function.  Program execution starts
here after stack initialization.
------------------------------------------------*/

void main (void)
{
        Set_All_GPIO_Quasi_Mode;                                        // Define in Function_define.h
        InitialUART0_Timer3(115200);
        set_CLOEN;  
  
       
  while(1)
  {
                        clr_GPIO1;                                                                                                // Tiny board GPIO1 LED define in Common.h
                        Timer2_Delay1ms(300);
                        set_GPIO1;
                        Timer2_Delay1ms(300);
                        Send_Data_To_UART0(0x55);                                        //UART0 send ascii "U"
  }
}


使用特权

评论回复
20
qwe12377yu| | 2017-4-27 15:59 | 只看该作者
N76E003的OCD片上调试系统怎么关的问题解决了么,怎么解决的啊,ICP工具好像也不行,谢谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

15

帖子

0

粉丝