-
资料挺实用的
-
版主理解是对的
楼主理解是有误的
27楼程序可以用,28楼也是可以的
-
为了减少数字地对模拟地的干扰,我们是要将他们分开的,
-
这里是在本地堆中分配内存,在一篇文章中看过,
Windows CE5.0只支持堆中固定块的分配,这样随着时间的推移,多次创建释放内存块,堆内就会产生大量的内存碎片。
而针对碎片的解决,文章只是说
程序员如果要频繁的在堆中创建、释放内存块的话,最好自己创建一个单独的堆,而不用默认的堆。
也就是说CE没有内存碎片回收机制。
看来这部分要自己实现了。
参加讨论者均有分数,谢谢!
-
这个帖子还飘着呢啊,这个用的着讨论吗?学几年ARM你就有体会了。。。
-
这段代码是原来的:
nColor = default_col;
nColor |= ((unsigned short)(ptPalette[cColorIndex].cRed) 1) | (green >> 6); //I555
-
引用 1 楼 kacyquan 的回复:
估计是这样的:右下角的时钟是系统计算得出来的时钟。每次双击之后系统自动get,RTC实时时钟。造成系统计算出来的和RTC实时时钟有差别。
那该如何消除差别呢
以前用cpu的rtc为何没有这种现象呢?
-
1,如果不置零,岂不是刚从中断退出又进入了IDLE?
2,手机在休眠状态下(假定是深度休眠,且是2440),来电和短信是如何唤醒系统的呢?我们知道休眠只有外部中断和RTC才能唤醒的~
-
干什么都有前途,LZ何必苦恼呢,努力就行
-
我也想看看,怎么整的?
-
void init_com(void)
{
TMOD = 0x20;
SCON = 0x50;
PCON = 0x00;
TH1 = 0xFD;
TL1 = 0xFD;
TR1 =1;
}
-
学习中!感谢!
-
那你按中心旋转之后,移下坐标就行啦。分析一下,其实效果不是一样的吗。
-
关于多路复用你到硬件、嵌入式版问一下
-
应该是知道的
只是原则问题,不说而已
-
DWORD CMidiStream::Close()
{
DWORD dwResult = StreamContext::Close();
if (dwResult==MMSYSERR_NOERROR)
{
AllNotesOff(0);
}
return dwResult;
}
HRESULT CMidiStream::UpdateTempo()
{
if (m_USecPerQuarterNote==0)
{
m_USecPerQuarterNote = 500000; // If not specified, assume 500000usec = 1/2 sec per quarter note
}
if (m_TicksPerQuarterNote==0)
{
m_TicksPerQuarterNote = 96; // If not specified, assume 96 ticks/quarter note
}
UINT64 Num = SAMPLERATE;
Num *= m_USecPerQuarterNote;
UINT64 Den = 1000000;
Den *= m_TicksPerQuarterNote;
UINT64 SamplesPerTick = Num/Den;
m_SamplesPerTick = (UINT32)SamplesPerTick;
return S_OK;
}
// Return the delta # of samples until the next midi event
// or 0 if no midi events are left in the queue
UINT32 CMidiStream::ProcessMidiStream()
{
WAVEFORMAT_MIDI_MESSAGE *pMsg;
WAVEFORMAT_MIDI_MESSAGE *pMsgEnd;
UINT32 ThisMidiEventDelta;
// Process all midi messages up to and including the current sample
pMsg = (WAVEFORMAT_MIDI_MESSAGE *)m_lpCurrData;
pMsgEnd = (WAVEFORMAT_MIDI_MESSAGE *)m_lpCurrDataEnd;
for (;;)
{
if (pMsg>=pMsgEnd)
{
pMsg = (WAVEFORMAT_MIDI_MESSAGE *)GetNextBuffer();
if (!pMsg)
{
// DEBUGMSG(1, (TEXT("CMidiStream::ProcessMidiStream no more events\r\n")));
return 0;
}
pMsgEnd = (WAVEFORMAT_MIDI_MESSAGE *)m_lpCurrDataEnd;
}
ThisMidiEventDelta = DeltaTicksToSamples(pMsg->DeltaTicks);
if (ThisMidiEventDelta > m_DeltaSampleCount)
{
m_lpCurrData = (PBYTE)pMsg;
INT32 Delta = ThisMidiEventDelta-m_DeltaSampleCount;
// DEBUGMSG(1, (TEXT("CMidiStream::ProcessMidiStream next event @delta %d\r\n"),Delta));
return Delta;
}
// DEBUGMSG(1, (TEXT("CMidiStream::ProcessMidiStream sending midi message 0x%x\r\n"),pMsg->MidiMsg));
InternalMidiMessage(pMsg->MidiMsg);
m_DeltaSampleCount=0;
pMsg++;
}
}
-
差不多弄明白了,结贴
-
xxx_write和iocontrol是两个相对独立的接口
把inbuffer按6410的spi工作时序复制到TX_FIFO就哦了
-
应该是在定时器中断处理上出的问题,甚至可能没进中断
-
楼主的代码是用两样的编译参数进行编译的吗?从现象描述上看似乎是用不同的参数编译了两个函数,而从给的代码上看又不是这样的,楼主可以再给些背景资料吗?