-
说说看有多强烈?
-
设计preload register和shadow register的好处是,所有真正需要起作用的寄存器(shadow register)可以在同一个时间(发生更新事件时)被更新为所对应的preload register的内容,这样可以保证多个通道的操作能够准确地同步。
但我现在是在TIM1的一个通道上实现,频率变化。
-
到底是ST-LINK II(万利板上自带的仿真器)的问题还是MDK软件的问题呢
-
不怀疑女生也能做的很漂亮,不建议女生玩单片机.现在的趋势都向ARM靠拢,可是社会上要求的懂ARM的又要求懂各种操作系统和各种平台,学起来超麻烦.
-
引用 1 楼 kyzf 的回复:
引用楼主 iceland_925 的回复:公司简介:国内最大的民营通信企业(由于内部原因不便直接透露企业名字,大家应该都能猜到:))
应该是HW吧!
听起来像是华为。
-
看样子, 调试器通信是需要时间的. 问题一定在调试器上面;
为此, 重新修改 Systick 中断服务程序, 将上面的计数器 x 记录下来保存到内存,
若干次后看保存的结果. 相信这样能脱离调试器的影响了吧.
哦, 获取寄存器的值是 C 所难办到的事情, 我使用下面的汇编代码来完成.
__inline __asm unsigned long getdat(void) {
mov r0, R4;
bx lr;
}
下面是 Systick 中断服务程序, 取 4 次的值, 然后在把断点放在 改变 PA1 的地方.
volatile unsigned char ucnt;
unsigned long ldat[16];
void SysTick_Handler(void) {
unsigned long cnt, dat = getdat();
unsigned long dsp = 2;
cnt = ucnt;
ldat[cnt] = dat;
cnt = (ucnt +1)%4; ucnt = cnt;
if (cnt ==0) {
if(GPIOA->IDR&2) dsp <<= 16;
GPIOA->BSRR = dsp;
}
}
下面是记录到的连续 4 个数据.
0x861CA0,0x6F394B,0x5855F5,0x41729F
差值 0x16E355,0x16E356,0x16E356 * 8 = B71AB0 (11999920)
这样的结果应该比较真实.两条指令共 6 个周期, 分支跳转使用 5 个周期.
下面是使用后面的代码 (四条指令一个循环) 记录到的连续 4 个数据.
0x7E7B80,0x5FF70E,0x323062,0x13ABF0
差值 0x1E8472,0x2DC6AC,0x1E8472 * 4 = 7A11C8 (7999944)
这里有个过分超差的值, 剩余 2 个是比较合理, 计算结果为 9 个周期.
估计应该是运算指令 1 个周期, 分支跳转 5 个周期, 分支不跳转 2 个周期.
另外发现一个过分超差的值, 经过多次调试, 发现会若干次后出现一次.
会不会就是前面提到的调试器的影响呢?
-
查查看(寄存器CAN_MSR),CAN处于什么状态,如果处于init状态就不对
-
/I
有包含的意思。
-
mark
-
我的理解:
体系结构不同,目标程序不能兼容的,但是重新编译一下的工作量不大。
-
不是很懂,学习中
-
mark下~~~
-
引用 17 楼 hudaweikevin 的回复:
诸葛,你搞过USB当然没难度了
[/quote]
搞过手柄,CE系统的驱动也没做过。不过HID协议倒是懂一些。
[quote]引用 20 楼 guopeixin 的回复:
引用 16 楼 zhuge36 的回复:
可以写个简单的驱动,获取数据就行,然后通过keyevent转为相应的键盘或鼠标消息。
这样貌似可以呀,但是应该还需要上层应用的配合吧
CE既然不支持手柄,那么CE的游戏肯定是支持键盘或鼠标的,要不怎么玩呢?用触摸屏?触摸屏也可当做鼠标吧
-
FPGA+ARM,推荐
-
引用 9 楼 codewarrior 的回复:
只会占用20M的虚拟地址,不会占用20M的物理内存。
我在CE6下直接内存映射一个80M的文件也没有任何问题。
帮顶,大侠,刚想回差不多意思的话,结果发现大侠留言呵呵
-
这个一定先要把硬件原理搞清楚,才能考虑驱动的问题。
-
我在猜测一种可能的原因是:
nk.exe调用的某些驱动类dll在bib中没有配置正确,可以简单的找公版上ok的wince6.0的bib对比一下
如果没有更好的办法,或许可以用kitl调试一下,因为但从你的调试信息来看,不确定是挂在了哪个阶段,可能是已经到了加载驱动的阶段,也可能是在系统启动的阶段
-
找到2楼所说的.def文件,在同一目录下应该还有一个source文件,修改它才行。
MDD+PDD实际上是MDD+PDD+FMD才行,也就是说必须要用原来FAL+FMD架构中的FMD层,将这一层的代码编译成一个lib库,fmdwrapperpdd也要编译成一个lib库,在source文件中引入这两个库,合并在一起编译出一个flashpdd.dll。
-
试试这种代码,注意修改 98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1 為你自己的wifi设备
void WifiOn()
{
DevicePowerNotify(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), D0, POWER_NAME);
SetDevicePower(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), POWER_NAME, D0);
}
void WifiOff()
{
DevicePowerNotify(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), D4, POWER_NAME);
SetDevicePower(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), POWER_NAME, D4);
}
-
问题已得到解决,谢谢各位