-
楼主问题解决没,个人感觉是if(index == 31)这个条件的问题啊!呵呵!
-
不好意思,贴子开太多贴错地方了!
-
楼主,这个问题搞定了没,我感觉是if(index == 31)这个条件的问题啊!呵呵!
-
确实啊,没有细心看下数据手册,教训啊!
-
自己先顶起来!
-
先提示could not single step device, 然后MCU就reset了!
-
版主,大神,江湖救急啊!
-
程序运行到PortAction = RETURNACTION;的时候,就是按键第一次按下,抬起的时候,高手能帮忙看下么,大概就在这个时候单片机就reset了。
-
这是我写的识别和单击和双击的程序,发现MCU老是会reset, 跑不下去,不知道为什么,求高手指教!
void Task_PortMonitor(void)
{
switch(ClickvalueTemp)
{
default:
{
break;
}
case NOCLICK:
{
if(!(P1IN & BIT3))
{
if(PortAction == KEEPACTION)
{
PortAction = SWITCHACTION;
PortCounter = 0u;
Standbycounter = 0u;
}
if(PortAction == SWITCHACTION)
{
if(PortCounter > 5000u)
{
ClickvalueTemp = SINGLECLICK;
}
}
if(PortCounter > 5000u)
{
Standbycounter ++;
PortCounter = 0u;
}
}
else
{
PortAction = KEEPACTION;
PortCounter = 0u;
Standbycounter = 0u;
}
break;
}
case SINGLECLICK:
{
if(!(P1IN & BIT3))
{
if(PortAction == RETURNACTION)
{
PortAction = SWITCHACTION;
}
else if(PortAction == KEEPACTION)
{
PortAction = TWICESWITCHACTION;
PortCounter = 0u;
//Standbycounter = 0u;// ?
}
else if(PortAction == TWICESWITCHACTION)
{
if(PortCounter > 5000u)
{
ClickvalueTemp = DOUBLECLICK;
}
}
if(PortCounter > 5000u)
{
Standbycounter ++;
PortCounter = 0u;
}
}
else
{
if(PortAction == SWITCHACTION)
{
PortAction = RETURNACTION;
SingleclickCounter = 0u;
PortCounter = 0u;
}
else if(PortAction == RETURNACTION)
{
if(PortCounter > 5000u)
{
PortAction = KEEPACTION; /* First click is finished */
}
}
else if(PortAction == KEEPACTION)
{
if(SingleclickCounter > 9u)
{
Clickvalue = SINGLECLICK; /* After single-click, wait for 500ms to confirm single-click */
ClickvalueTemp = NOCLICK; /* Wait for 500ms, no action on switch, return to initial status */
}
}
if(PortCounter > 5000u)
{
SingleclickCounter ++;
Standbycounter ++;
PortCounter = 0u;
}
}
break;
}
case DOUBLECLICK:
{
if(!(P1IN & BIT3))
{
if(PortAction == RETURNACTION)
{
PortAction = TWICESWITCHACTION;
}
if(PortCounter > 5000u)
{
Standbycounter ++;
PortCounter = 0u;
}
}
else
{
if(PortAction == TWICESWITCHACTION)
{
PortAction = RETURNACTION;
PortCounter = 0u;
}
else if(PortAction == RETURNACTION)
{
if(PortCounter > 5000u)
{
Clickvalue = DOUBLECLICK;
PortAction = KEEPACTION;
ClickvalueTemp = NOCLICK;
}
}
if(PortCounter > 5000u)
{
Standbycounter ++;
PortCounter = 0u;
}
}
break;
}
}
}
-
自己先顶起来,请教高手啊!
-
顶下吧!
-
不好意思,兄弟,问一下啊,如果片内有两个程序,一个boot loader,一个是应用mai(),复位从boot loader程序开始,那设定一段时间后需要跳至main()运行,那在boot loader里用C的那条指令可以实现啊,汇编是用BR指令的!
-
不好意思,兄弟,问一下啊,如果片内有两个程序,一个boot loader,一个是应用mai(),复位从boot loader程序开始,那设定一段时间后需要跳至main()运行,那在boot loader里用C的那条指令可以实现啊,汇编是用BR指令的!
-
请问哪里找到这个属性的资料啊,没看到哇!
-
请教了,这条指令下了以后,提示出错,出错内容为:
location address not allowed for functions.
这是为什么呢?
我下的是(MSP430F2132)
void main(void) @ 0xe200
{
...........
}
-
有路过知道的兄弟麻烦告诉一下!
-
但是,就算我修改了代码空间的地址,那我怎么确认应用程序的起始地址就在0x1600呢,因为开机首先是从0x1100运行(就是boot loader的程序),在10s内不进行boot loader的话,程序跳转至0x1600应用程序执行,所以我要保证0x1600是应用程序的起始地址,只是修改代码空间能做到么?
-
兄弟啊,你知道IAR用C语言编译后,怎么将代码导出为hex文件啊,原本的是*.d43文件吧,不知道这是什么格式,直接在IAR里打开也没有内容啊!
-
还是和上次问你的那个问题相关的,我要专门写boot loader程序,用于升级程序的,那boot loader程序有一个存储空间,另外通过boot loader程序写入的应用程序也有一个空间,但是我需要准确的定义boot loader的存储空间,以便在下载应用程序时候复写到boot loader的存储空间啊!
-
呵呵,是啊!:)