关于NVIC使用以及M0和M3的异同
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于NVIC使用以及M0和M3的异同相关的知识,希望对你有一定的参考价值。
定期存款)M3=M2+其他货币性短期流动资产(国库券:
M1 是狭义货币供应量;金融债券。
M0=流通中现金
M1=流通中现金+可交易用存款(支票存款;
现阶段我国货币供应量划分为以下三个层次、M1,也反映了潜在的购买力, M2 是广义货币供应量货币供应量按流动性划分为 M0,特别是掌握其构成的变化、M2,对整个国民经济状况的分析,商品的供应量应和M1保持合适的比例关系,研究M2,不然经济会过热或萧条.
M2反映了现实的购买力;转帐信用卡存款)
M2=M1+非交易用存款(储蓄存款;大额可转让定期存单等)
M0流通中的现金量作为最窄意义上的货币
M1反映了社会的直接购买能力;商业票据,预测都有特别重要的意义.紧缩的方法就是提高存款准备金率、M3四个层次; M1 与 M2 之差是准货币 参考技术A ARM7,arm9,arm11,cortex
M0/M3分别代表ARM处理器的一个系列。
ARM7架构为ARMv4
ARM9架构为ARMv5
ARM11架构为ARMv7
CORTEX又分三个系列,分别是:
cortex-A,cortex-R,cortex-M架构是ARMv7
cortex
M0/M3属于cortex-M系列,是ARM最新架构,目前STM32用的比较多
建议直接上手cortex
M0/M3
debug和release下PostThreadMessage的异同
MFC中创建线程分为工作线程和UI线程。其中UI线程可以通过继承CWinThread进行创建。
创建函数如下:
CWinThread *m_pRecogThread;//语音识别线程
m_pRecogThread =(CSpeechRecogThread *) AfxBeginThread(RUNTIME_CLASS(CSpeechRecogThread));
这样就创建了UI线程,就可以通过m_pRecogThread->PostThreadMessage(UM_VERIFY_AVAILABILITY,NULL,NULL),给当前线程发送消息。
然而,PostThreadMessage缺常常会出问题。在debug下,上述代码能够正确执行,而debug下不能正确执行。
我们执行下面代码捕捉错误,
DWORD dw; dw = GetLastError(); CString str; str.Format("%u",dw);
正常情况下,返回的应该是0,而错误的时候返回的是1444.
百度后发现,1444 PostThreadMessage 这种错误是因为线程没有创建消息队列,可以通过延时解决。以下是代码:
while(!m_pRecogThread->PostThreadMessage(UM_VERIFY_AVAILABILITY,NULL,NULL))
{
Sleep(1000);
}
但是上述代码在release模式下没有任何变化。
百度了好久,找到一个链接MFC‘s CWinThread::PostThreadMessage handler not called .PostThreadMessage没有被调用。
可以通过在该线程InitInstance函数中,调用PeekMessage解决。具体的步骤就是在InitInstance函数中加入如下代码。
AfxOleInit();
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
MSG msg;
PeekMessage(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE);
到处,问题被完整解决:
参考文献:
1 http://stackoverflow.com/questions/12764300/mfcs-cwinthreadpostthreadmessage-handler-not-called
2 http://www.cppblog.com/sandy/archive/2005/12/31/2320.html
以上是关于关于NVIC使用以及M0和M3的异同的主要内容,如果未能解决你的问题,请参考以下文章