-
看了半天还不是十分明白楼主要做什么?
你最好先说说你的目标,再说实施方案,不要混在一起。
-
我晕,怎么一个人都没有啊。快沉了
-
裸机跑的时候不加也没有问题,奇怪。我用的是3.0的版本,最新的版本好像已经加了这句。
看样子得用最新的库了,哪位兄弟提供个链接?
-
NK要加入对应的FILTER
请问这个怎么加的?
请高手指点
-
初步判断问题出在中断优先级上。我用的是比较老的固件库(Keil-MDK3.8),使用了默认NVIC设置。查了文档,发现默认状态下,CortexM3核没有使能抢占式中断嵌套,所有外设中断的优先级都是相同的。在这种情况下,哪个中断源先到,CPU先处理之。如果有并发中断产生,哪个中断源的向量地址低,系统就先处理它。(此处还有个疑问,那是不是说那个向量地址高的中断就被忽略了呢?因为系统并没有开启中断嵌套的说。)查了中断向量地址,发现USART的中断地址果然比较靠后,不但在DMA1通道的所有中断地址之后,也在外部中断EXTI之后。具体到本人的设计中,因为有一个800Hz的外部中断不停的触发,导致绝大多数情况下系统无法响应向量地址更靠后的USART中断。(惭愧,之前一直用TI的DSP,对中断嵌套的关注很少。比较一下发现CM3的中断机制明显更有特色!)如有错误,请一定指正!多谢各位了!
-
扫描函数的入口参数,确定按键具体功能。进而返回不同的值。不同界面处理对应的返回值。
-
要走了,这个问题我没有遇见过。
玩命兄,希望早日解决问题!
假期快乐!
-
现在流行的做法!给你参考一下,很多人的博客都转载了的!
作者:ARM-WinCE
在WinCE下面,创建工程,然后编译是需要花很长时间的。当我们第一编译完工程以后,如果需要改我们的驱动或者BSP,我们是不需要重新编译整个工程的:
1. 如果更改了driver,以WinCE6.0为例,我们可以在菜单里面选择“build”->“Open Release Directory in Build Window” ,然后在弹出的命令行窗口中,通过dos命令切换到你要编译的driver的目录下面,然后运行“build”就可以了。也可以运行“build -c”会强制把所有的文件都编译一遍。被编译后的driver的dll会被自动拷贝到release目录下面,然后再切换的工程的release目录下面,运行一下“make image”就可以了。
2. 如果改变了OAL部分的代码,同样用上面介绍的方法,需要注意的是,OAL部分可能包含多个文件夹,如果改变了OAL里面的代码,不要进入OAL里面的文件夹去编译,一定要在OAL这层进行编译,这样OAL部分的lib,dll才会被重新编译并拷贝到release目录下面。
3. 如果改变了配置文件,比如config.bib,platform.reg文件,那么直接将这些文件拷贝到你的工程目录下面,然后运行一下“make image”就可以了。
4. 如果改变了eboot部分的代码,那按照步骤1的方法就可以了,可能你都不需要运行“make image”命令,因为可能你只需要eboot.bin或者eboot.nb0。
-
可用分可以转成资源分。
-
以前有,但是没有看过
都不知道放在哪里去了
-
学习一下
-
建议楼主 去金升阳公司 ,选择一款ACDC 模块,这样就可以直接把220转换成12V 和3.3V
你的6V可以采用12V 通过一个DCDC 降压到6V即可。如果需要电流大,可以采用TPS5430,
如果电流小,可以去TI网站找个, 另外凌特的DCDC 也很不错,可以去看看
刚才说金升阳公司的ACDC 模块的网址:
http://www.mornsun.cn/cn/product_inf.aspx?typeID=17
上面还有对应的PDF ,楼主可以仔细看看、。
-
自已顶起
-
公式之所以在分子上加上(BPB_BytsPerSec–1),是为了保证根目录区没有填满整数个扇区时仍然适用。其实也可以将公式变成下面这样演算:
RootDirSectors = (BPB_RootEntCnt*32)/BPB_BytsPerSec
= RootDirSectors'(商) + 余数/BPB_BytsPerSec
其中RootDirSectors'就是(BPB_RootEntCnt*32)/BPB_BytsPerSec得到的整数部分,“余数/BPB_BytsPerSec”就是小数部分。
所以计算RootDirSectors的值就需要做如下判断:
(1)当余数=0时,RootDirSectors = RootDirSectors'
(2)当余数!=0时,RootDirSectors = RootDirSectors' + 1
所以文中所说的白皮书中的公式,我们可以根据我在前面提到的演算过程拆分成这样:
RootDirSectors =((BPB_RootEntCnt*32)+(BPB_BytsPerSec–1))/BPB_BytsPerSec
= RootDirSectors' + 余数/BPB_BytsPerSec + (BPB_BytsPerSec–1)/BPB_BytsPerSec
= RootDirSectors' + (余数 + (BPB_BytsPerSec–1))/BPB_BytsPerSec
这样无论余数是否为0,我们只需要对这个公式计算结果取整做为RootDirSectors,结果都和(1)、(2)的判断所得到的结果一样。
所以白皮书中的公式简化了判断,方便了计算。
-
大家都说了DMA是数据传输时不用CPU干预,CPU将总线控制权交给DMA控制器。这个就不再赘述。讲讲怎么用DMA接受数据:
以接收为例,如果在UART中设置DMA模式,就将URXH寄存器的地址给DMA中SRC寄存器病设置相关寄存器,然后再给DMA中DST目标寄存器一个地址(若为0x320000000)并设置相关寄存器,开启DMA及其DMA中断,然后可以在DMA中断服务程序里面将0x320000000处的数据一一读出即可。就这么简单!
-
MDK下能不能用C++呀?
我试了一下怎么不认识class关键字
-
帮顶
-
使用万用表能初步判断晶体是否起振。
-
建议看一下MODBUS协议
-
搞不明白,你的CPU1如何防作弊?“通过载波把脉冲送过来,让STM3解码”,这个原理是什么?