-
但定时中断一直能正常运行,启动ADC,
void TIM2_IRQHandler(void)
{
static INT16U count = 0;
if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET)
{
TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);
ADC_SoftwareStartConvCmd(ADC1,ENABLE);
// Start ADC1 Software Conversion
capture = TIM_GetCapture1(TIM2);
TIM_SetCompare1(TIM2, capture + TimerCount_500);
}
else if (TIM_GetITStatus(TIM2, TIM_IT_CC2) != RESET)
{
TIM_ClearITPendingBit(TIM2, TIM_IT_CC2);
capture = TIM_GetCapture2(TIM2);
TIM_SetCompare2(TIM2, capture + CCR2_Val);
}
else if (TIM_GetITStatus(TIM2, TIM_IT_CC3) != RESET)
{
TIM_ClearITPendingBit(TIM2, TIM_IT_CC3);
capture = TIM_GetCapture3(TIM2);
TIM_SetCompare3(TIM2, capture + CCR3_Val);
}
else
{
TIM_ClearITPendingBit(TIM2, TIM_IT_CC4);
capture = TIM_GetCapture4(TIM2);
TIM_SetCompare4(TIM2, capture + CCR4_Val);
}
}
-
有没问题不知道,但效率确实比IO模拟的高太多了
-
希望有高说做进一步的解释。
-
我改为char a[]="是";
char qh = 0, wh = 0;
//每个汉字,占两个字节, 取其区位号
qh = (a[0]/94) + 0xa1; //获得区码
wh = (a[1]%94) +0xa1; //获得位码
当输出qh,wh时还是地址,并不是区位码。
我改的对吗?
-
引用 3 楼 lerd_cs 的回复:
ARM
-Xcode-absolute-far' for diab or '-mlong-calls' for gnu.
谢谢哈~就是这个解决方案,问题已解决~~
-
xuexue
-
下面是调试输出信息(打开串口驱动调试信息的):
16:02:28.593 SetBaudRate -> 115200
16:02:28.593 -SL_SetbaudRate 0x58480 (115200 Baud)
16:02:28.593 +SL_SetByteSize 0x58480, 0x8
16:02:28.593 -SL_SetByteSize 0x58480
16:02:28.593 +SL_SetStopBits 0x58480, 0x0
16:02:28.609 -SL_SetStopBits 0x58480
16:02:28.609 +SL_SetParity 0x58480, 0x0
16:02:28.609 -SL_SetParity 0x58480
16:02:28.609 ClearPendingInts
16:02:28.609 SL_PostInit
16:02:28.625 ClearPendingInts
16:02:28.625 ReadLSR
16:02:28.625 Line Status Register : 0x0
16:02:28.625 +SL_PurgeComm 0x8
16:02:28.625 SL_SetDCB : BaudRate is 115200
16:02:28.625 SL_SetDCB : Set ByteSize is 8
16:02:28.640 SL_SetDCB : Set Parity is 0
16:02:28.640 SL_SetDCB : Set StopBits is 0
16:02:28.656 -SL_SetDCB 0x58480
16:02:28.656 +SL_ClearDTR, 0x58480
16:02:28.656 UseIrDA, 0
16:02:28.671 -SL_ClearDTR, 0x58480
16:02:28.671 +SL_ClearRTS, 0x58480
16:02:28.671 -SL_ClearRTS, 0x58480
16:02:28.687 +SL_SetCommTimeout 0x58480
16:02:28.687 -SL_SetCommTimeout 0x58480
16:02:28.687 +SL_PurgeComm 0xF
16:02:28.687 SL_TxIntrEx
16:02:28.703 SL_TxIntrEx : 9
16:02:28.703 SL_TxInt - *pTxBuffer = 0x74
16:02:28.703 SL_TxInt - *pTxBuffer = 0x74
16:02:28.718 SL_TxInt - *pTxBuffer = 0x74
16:02:28.718 SL_TxInt - *pTxBuffer = 0x74
16:02:28.718 SL_TxInt - *pTxBuffer = 0x74
16:02:28.718 SL_TxInt - *pTxBuffer = 0x74
16:02:28.734 SL_TxInt - *pTxBuffer = 0x74
16:02:28.734 SL_TxInt - *pTxBuffer = 0x74
16:02:28.734 SL_TxInt - *pTxBuffer = 0xd
16:02:28.750 INT_uar2------
16:02:28.750 INT_uar2 Txd------
16:02:28.750 SL_GetInterruptType : 0xE940BF4D, 0x69A, 0x8800, 0x92, 0x0, 0x1
16:02:28.750 SL_GetInterruptType: INTR_TX
16:02:28.750 SL_TxIntrEx
16:02:28.765 SL_GetInterruptType : 0xE940BF4D, 0x69A, 0x800, 0x92, 0x0, 0x0
16:02:28.765 SL_GetInterruptType: INTR_NONE(pHWHead->bINT)
16:02:28.765 SL_TxIntrEx
16:02:28.765 SL_TxIntrEx : 9
16:02:28.765 SL_TxInt - *pTxBuffer = 0x74
16:02:28.765 SL_TxInt - *pTxBuffer = 0x74
16:02:28.765 SL_TxInt - *pTxBuffer = 0x74
16:02:28.781 SL_TxInt - *pTxBuffer = 0x74
16:02:28.781 SL_TxInt - *pTxBuffer = 0x74
16:02:28.781 SL_TxInt - *pTxBuffer = 0x74
16:02:28.781 SL_TxInt - *pTxBuffer = 0x74
16:02:28.781 SL_TxInt - *pTxBuffer = 0x74
16:02:28.781 SL_TxInt - *pTxBuffer = 0xd
16:02:28.796 GET_DESCRIPTOR:DEVICE 0x12, 0x40
16:02:28.796 SET_ADDRESS - 0x1
16:02:28.796 GET_DESCRIPTOR:DEVICE 0x12, 0x12
16:02:28.796 GET_DESCRIPTOR:CONFIGURATION
16:02:28.812 GET_DESCRIPTOR:CONFIGURATION
16:02:28.812 GET_DESCRIPTOR:DEVICE 0x12, 0x12
16:02:28.812 GET_DESCRIPTOR:CONFIGURATION
16:02:28.812 SET_CONFIG 1
16:02:28.984 AUTORAS:: Dialer notifies: [1] [Dialer Start]
16:02:29.734 SL_TxIntrEx
16:02:29.734 SL_TxIntrEx : 9
16:02:29.734 SL_TxInt - *pTxBuffer = 0x74
16:02:29.734 SL_TxInt - *pTxBuffer = 0x74
16:02:29.750 SL_TxInt - *pTxBuffer = 0x74
16:02:29.750 SL_TxInt - *pTxBuffer = 0x74
16:02:29.750 SL_TxInt - *pTxBuffer = 0x74
16:02:29.765 SL_TxInt - *pTxBuffer = 0x74
16:02:29.765 SL_TxInt - *pTxBuffer = 0x74
16:02:29.765 SL_TxInt - *pTxBuffer = 0x74
16:02:29.765 SL_TxInt - *pTxBuffer = 0xd
16:02:30.546 Posting WM_NETCONNECT(TRUE) message
16:02:30.609 AUTORAS:: Dialer notifies: [4] [Dialer Connected]
16:02:30.921 SL_TxIntrEx
16:02:30.921 SL_TxIntrEx : 9
16:02:30.921 SL_TxInt - *pTxBuffer = 0x74
16:02:30.984 SL_TxInt - *pTxBuffer = 0x74
16:02:30.984 SL_TxInt - *pTxBuffer = 0x74
16:02:30.984 SL_TxInt - *pTxBuffer = 0x74
16:02:30.984 SL_TxInt - *pTxBuffer = 0x74
16:02:31.000 SL_TxInt - *pTxBuffer = 0x74
16:02:31.000 SL_TxInt - *pTxBuffer = 0x74
16:02:31.000 SL_TxInt - *pTxBuffer = 0x74
16:02:31.000 SL_TxInt - *pTxBuffer = 0xd
16:02:32.359 SL_TxIntrEx
16:02:32.359 SL_TxIntrEx : 9
16:02:32.359 SL_TxInt - *pTxBuffer = 0x74
16:02:32.359 SL_TxInt - *pTxBuffer = 0x74
16:02:32.375 SL_TxInt - *pTxBuffer = 0x74
16:02:32.375 SL_TxInt - *pTxBuffer = 0x74
16:02:32.421 SL_TxInt - *pTxBuffer = 0x74
16:02:32.421 SL_TxInt - *pTxBuffer = 0x74
16:02:32.421 SL_TxInt - *pTxBuffer = 0x74
16:02:32.421 SL_TxInt - *pTxBuffer = 0x74
16:02:32.437 SL_TxInt - *pTxBuffer = 0xd
16:02:32.734 OEMSetRealTime: Year: 2010, Month: 4, Day: 20, Hour: 16, Minute: 2, second: 31 rcnr=1h
16:02:32.734 OEMSetRealTime(register): Year: 10, Month: 4, Day: 20, Hour: 16, Minute: 2, second: 31 rcnr=1h
16:02:33.421 SL_TxIntrEx
16:02:33.421 SL_TxIntrEx : 9
16:02:33.421 SL_TxInt - *pTxBuffer = 0x74
16:02:33.421 SL_TxInt - *pTxBuffer = 0x74
16:02:33.437 SL_TxInt - *pTxBuffer = 0x74
16:02:33.437 SL_TxInt - *pTxBuffer = 0x74
16:02:33.437 SL_TxInt - *pTxBuffer = 0x74
16:02:33.437 SL_TxInt - *pTxBuffer = 0x74
16:02:33.453 SL_TxInt - *pTxBuffer = 0x74
16:02:33.453 SL_TxInt - *pTxBuffer = 0x74
16:02:33.453 SL_TxInt - *pTxBuffer = 0xd
16:02:34.359 SL_TxIntrEx
16:02:34.359 SL_TxIntrEx : 9
16:02:34.359 SL_TxInt - *pTxBuffer = 0x74
16:02:34.375 SL_TxInt - *pTxBuffer = 0x74
16:02:34.421 SL_TxInt - *pTxBuffer = 0x74
16:02:34.421 SL_TxInt - *pTxBuffer = 0x74
16:02:34.421 SL_TxInt - *pTxBuffer = 0x74
16:02:34.421 SL_TxInt - *pTxBuffer = 0x74
16:02:34.437 SL_TxInt - *pTxBuffer = 0x74
16:02:34.437 SL_TxInt - *pTxBuffer = 0x74
16:02:34.437 SL_TxInt - *pTxBuffer = 0xd
16:02:35.296 SL_TxIntrEx
16:02:35.296 SL_TxIntrEx : 9
16:02:35.296 SL_TxInt - *pTxBuffer = 0x74
16:02:35.359 SL_TxInt : Error : i = 600000
16:02:36.796 SL_TxIntrEx
16:02:36.796 SL_TxIntrEx: Not Send - rFifoStat[0x4000] TxFifoCnt[0x0]
16:02:38.109 SL_TxIntrEx
16:02:38.109 SL_TxIntrEx: Not Send - rFifoStat[0x4000] TxFifoCnt[0x0]
16:02:39.484 SL_TxIntrEx
16:02:39.484 SL_TxIntrEx: Not Send - rFifoStat[0x4000] TxFifoCnt[0x0]
16:02:40.921 SL_TxIntrEx
16:02:40.921 SL_TxIntrEx: Not Send - rFifoStat[0x4000] TxFifoCnt[0x0]
16:02:42.296 SL_TxIntrEx
16:02:42.296 SL_TxIntrEx: Not Send - rFifoStat[0x4000] TxFifoCnt[0x0]
16:02:43.734 SL_TxIntrEx
16:02:43.734 SL_TxIntrEx: Not Send - rFifoStat[0x4000] TxFifoCnt[0x0]
16:02:45.109 SL_TxIntrEx
16:02:45.109 SL_TxIntrEx: Not Send - rFifoStat[0x4000] TxFifoCnt[0x0]
16:02:46.546 SL_TxIntrEx
16:02:46.546 SL_TxIntrEx: Not Send - rFifoStat[0x4000] TxFifoCnt[0x0]
16:02:47.921 SL_TxIntrEx
16:02:47.921 SL_TxIntrEx: Not Send - rFifoStat[0x4000] TxFifoCnt[0x0]
16:02:49.359 SL_TxIntrEx
16:02:49.359 SL_TxIntrEx: Not Send - rFifoStat[0x4000] TxFifoCnt[0x0]
16:02:50.734 SL_TxIntrEx
16:02:50.734 SL_TxIntrEx: Not Send - rFifoStat[0x4000] TxFifoCnt[0x0]
16:02:52.171 SL_TxIntrEx
16:02:52.171 SL_TxIntrEx: Not Send - rFifoStat[0x4000] TxFifoCnt[0x0]
16:02:53.546 SL_TxIntrEx
16:02:53.546 SL_TxIntrEx: Not Send - rFifoStat[0x4000] TxFifoCnt[0x0]
应用程序上,我是用115200打开串口,然后循环发送"tttttttt\r"的
-
楼主你所说的虚拟地址搞错能给我发个E-MAIL说说吗我也有你这个现象我的邮箱是wild_caojian@163.com
-
答案,谢谢了
-
GE
LE
-
我自己先顶下哈...
-
o不好意思,我是初学者,用的是IAR4.42A编译环境,请楼上指教我应该从哪里改堆栈的大小呢?
-
很好谢了
-
我想是焊接造成。主要原因铬铁带感应电(用万用表测试铬铁交流5VAC~18VAC)。我铬铁接地及上电焊后一样。当不接地只拔除铬铁电源后焊接大有改善。我想了解下NXP的是否一样?
-
简单的八位单片机就可以,还不需要操作系统.
-
买个USB的调试工具,也不贵的
-
因为你的是移植了ucos-ii,所以ISR不要那个__irq.....
-
关注中......
-
引用 3 楼 zyzhang365 的回复:
晕!
在中断里面计数就可以了。
假如你中断周期是100ms,如果你需要1000ms(1s)的定时,那么在中断中软件计数10次就可以了。
具体的楼主可以算算。
我用的也是这种方法
-
用微软的肯定是这样的,要想有特色,自己找个懂ps的帮你画图,你直接在程序里bitblt