-
CPU系统时钟设置对的啊 这个时钟频率和等待周期的对应关系我知道的
FLASH->ACR |= FLASH_ACR_PRFTBE;
FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY);
FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2;
改为了FLASH->ACR= (uint32_t)(FLASH_ACR_PRFTBE|FLASH_ACR_LATENCY_2);
就好了 其实对ACR的设置值,两种方法最终是一样的,但是结果是库函数那样搞 第3句执行完就HardFault了。我自己写的就没有HardFault了
-
学习一下 。。。路过 现在了解了一些 谢谢!
-
引用 15 楼 hjf0102 的回复:
外部中断0 > 定时/计数器0 > 外部中断1 > 定时/计数器1 > 串行中断
89C51单片机不是只有2级优先级的吗??
怎么有5级啦??
怎么会有5级呢 这个说的只是在同一优先级中 cpu执行的顺序了啦
-
拜读~
-
楼主好好比对 下 两款430单片机 在功能模块 以及对应控制CC2500时所用到 的IO等硬件资源,是否2232也有对应的 模块。
首先保证硬件可替代性,然后根据更换对应的MCU的头文件,
然后再进行调测。
-
描述太简单,无法解答
-
应该可以吧
有RAW DRV能操作磁盘,在上面理论上可以mount任何的逻辑文件系统
-
挖坟、不结贴、以及明明解决问题还不满意结贴的行为
都要受到鄙视!!
-
电路不同有所不同。
要考虑的问题:
1、二极管的导通、截止时候测试点的电平;
2、MCU 那个脚高低电平的范围。
综合上面两点,谁都可以弄了吧
-
SQLite 最好。
-
LZ最后解决了吗?我现在也遇到这个问题,求教
-
大家就当个娱乐吧!我给个算法:首先做个数组里面是计算好的初值,在你每次中断时给一个数组索引加一,然后按索引找到初值初始化时钟值,可以减少累计误差。
code int clockivL[N]={0xe3,0xe6,....};
code int clockivH[N]={0x35,0xe6,....};
static void timer0_isr (void) interrupt 1 using 1
{
static int cindex;
cindex++;
cindex=cindex % N
TR0=0; /* stop timer 0 */
TL0 = clockivL[cindex];
TH0 = clockivH[cindex];
TR0=1; /* start timer 0 */
...
}
注意索引不一定是进一位的!
-
呵呵,来晚了
-
时钟,电源都确认了没问题啊
-
引用楼主 zhdi1986 的回复:
我在ICOP的X86板子上使用驱动程序处理GPIO中断,设置为低电平触发。问题是我把引脚接到低电平时,就会不停地触发中断,IST是这样写的:
DWORD WINAPI ISTThread(LPVOID lpv)
{
? ? PIST_INFO IstData = (PIST_INFO) lpv;
? ? DWORD Result;
? ? int? Cnt = 0;
? ? InterruptDone(IstData->SysIntr);
? ? while(!IstData->IstQuit) {
? ? ? ? Result = WaitForSingleObject(IstData->hEvent,INFINITE);
? ? ? ? if (IstData->IstQuit) {
? ? ? ? ? ? wprintf(_T("Quit IST\n"));
? ? ? ? ? ? break;
? ? ? ? }
? ? ? ? if (WAIT_OBJECT_0 == Result) {
? ? ? ? ? ? if (!IstData->IstQuit) {
? ? ? ? ? ? ? ? //输出中断产生信息
? ? ? ? ? ? ? ? wprintf(_T("GPIO Interrupt occured[%d]\b\r"),Cnt++);
? ? ? ? ? ? ? ? InterruptDone(IstData->SysIntr);
? ? ? ? ? ? ? ? DisableIntr(0xdc);
? ? ? ? ? ? ? ? DisableIntr(0xe0);
? ? ? ? ? ? }
? ? ? ? ? ? else {
? ? ? ? ? ? ? ? wprintf(_T("Quit IST\n"));
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? SetEvent(IstData->hEvent);
? ? wprintf(_T("Quit IST\n"));
? ? return 0;
}
还请各位高手指点迷津,谢谢。
1.从这个中断处理线程上没看出什么问题,这两天也在弄中断的事情,有参考过其他的部分中断的开发,INIT初始化了以后一定要Deinit,LZ不知道这个部分定义了没有清除相关中断信息的工作
2.如LS GM所说如果一直的低电平,当然是在中断里面,肯定是没出来。LZ确认下是定义成下降沿中断响应还是低电平中断响应,如果你做成电平边沿响应中断可能也可以解决这个问题,如果是电平高低响应低电平状态一定是在中断里面出不来的。
个人建议,仅供参考。
Mercury
-
难道没有知道!请大家一定要把这个问题解决!!!
-
USB的比较难,目前开源的一个都没有,linux下就有,
-
引用 6 楼 91program 的回复:
引用 2 楼 pf19861021 的回复:
registerwnd是我在头文件里写的注册窗口方法。
int registerwnd(HINSTANCE);
可能是写的有问题
未定义的错误,需要从定义处入手,然后看其调用是否合法
我试试把 定义的部分重新写一次
-
关注并学习中。
-
你的选择不错,目前,嵌入式行业最火。这个行业内几乎都是高薪IT人才,成就的金领也最多。人才缺口很大,有很好的发展前途。
嵌入式开发主要有两种:
一种偏硬,主要使用语言是C语言和汇编,例如做驱动开发,这类的开发对硬件要求比较高,短期内比较难掌握,除非是专业人士,另外,这类开发的就业机会比较少,因为国内的硬件设计力量很弱,稍复杂的硬件都交给台湾或国外公司设计。
一种偏软,主要基于嵌入式操作系统,例如Symbian、Linux、Android等等,开发人员主要从事嵌入式操作系统和应用软件的开发。特点是:比较容易上手学习,就业机会多,因为嵌入式设备的增值很大程度上取决于嵌入式软件,这占了嵌入式系统的最主要工作。就业前景也非常的看好。
个人非常看好第二种,3G嵌入式行业的前景是不可限量的,没有比这个更有前途的了。3G行业的嵌入式开发,就是对智能设备智能手机的研发,智能手机取代电脑取代笔记本是未来发展的趋势,这也是为什么国际重量级的企业例如Microsoft、Google、Nokia、Moto花重金在上面的原因。而且不仅3G行业,工业、家电等将来都要智能化,嵌入式技术是不可缺少的。所以学好嵌入式,走遍天下。
目前专业的嵌入式培训不多,因为是最近几年发展起来的。这里可以给你推荐一个培训机构:东方赛富的培训与就业做的不错,在北京口碑很好。他们做的是百年IT教育,致力于为中国高端3G嵌入式人才的培养,课程设置、实验指导、讲师实力等居于行业第一阶梯。
东方赛富的先进管理模式和强大的师资队伍在国内是罕见的。
东方赛富的老师都是项目驱动制,师资团队是整个3G嵌入式培训领域最好的。80%的老师来自清华大学、世界500强企业和中国顶尖的IT公司。
东方赛富的培训模式大多是以动手为主,学员大部分时间是在做实践,基本上是上午学理论,下午做实验,晚上自习,使知识真正转化为个人的能力。保证学员学习中做相关的小项目,最后还要做几上企业级的大项目,让学员到企业后马上就能上手要求的工作,在工作一两年后可以达到行业工程师的水平。