-
偶也准备来强食吃了。。。。。
-
这种并行方式,FSMC支持应该没问题
-
手头没有示波器,示波器能捕捉到短暂的一个字符串,并解析是什么字符吗?我曾怀疑过力特的USB to 232线,接在台式计算机串口上,现象一样,上位机接收软件也换了好几个,果真做到了怀疑一切的地步。
-
串口3用DMA(DMA1 CH2)发送:
/*******************************************************************************
*函数名 : Init_DMA1_Ch2 *
*参数 : 无 *
*返回值 : 无 *
*功能 : 初始化Init_DMA1_Ch4 *
*******************************************************************************/
void Init_DMA1_Ch2(void)
{
RCC->AHBENR|=0x00000001;//AHB外设的DMA1时钟使能
DMA1_Channel2->CCR|=(1<<12);
DMA1_Channel2->CCR|=((1<<1)|(1<<3)|(1<<4)|(1<<7)|(1<<8));
NVIC->ISER[0]|=(vu32)(1<<12);//NVIC设置允许DMA1_Ch2中断
}
/*******************************************************************************
*函数名 : DMAChannel2_IRQHandler *
*参数 : 无 *
*返回值 : 无 *
*功能 : DMA1通道4全局中断服务程序 *
*******************************************************************************/
void DMAChannel2_IRQHandler(void)
{
if((DMA1->ISR&0x00000080)==0x00000080){DMA1->IFCR|=0x00000080;}
if((DMA1->ISR&0x00000020)==0x00000020)
{
DMA1->IFCR|=0x00000020;
USART3->CR3&=0xFFFFFF7F;//DMA发送禁止
Uart3_Sen_En=0;
}
DMA1->IFCR|=0x00000010;//清全局中断标识
}
-
没有试过,但是除了初始化搞的有点复杂外,读写语句的逻辑是对的。
-
应该是示波器探讨造成的波形畸变,非芯片产生的畸变!
-
是呀,具体一点,需要什么样的技术,需要什么样的互动
-
直接转的话,转换芯片会不会发热很厉害,如果分级转,发热量是不是平摊到每级的转换芯片上,这样会保险些????
-
引用 7 楼 domworldjohn 的回复:
一般多线程编程其全局变量都需要加volatile关键字修饰,并且需要使用互斥对象对全局变量进行互斥,否则会容易出现多个线程同时改变全局变量的情况。
楼上说的对,另外再好不要用静态变量,对于全局变量,最好 lock 一下
-
可以,看你怎么用了。比如你要5V放大到10V呵呵,那你的供电电源至少要到10V以上
-
各位好!小弟下午有好好看dm9000驱动的源码!并通过相关调试信息分析了下,这里还根据网上牛人的文章分析了dm9000驱动的流程。下面是我的分析还请各位大侠们指点下小弟。谢谢了!
从dm9000.def文件中可以看到dm9000的驱动程序(dm9000.dll)exports的函数只有DriverEntry。从名字上也可以看出这是该dll文件入口。
下面详细看下这个入口函数(在driver.cpp中实现):在这个函数中主要有一个NdisMInitializeWrapper(),这个函数中有很多回调函数MiniportInitialize,MiniportReset,MiniportInterruptHandler,MiniportISRHandler,MiniportQueryInformation,MiniportSetInformation,MiniportSend)。这些函数在驱动中已经实现好了。在这里还有一个NdisMRegisterMiniport()函数。This function registers an NIC or intermediate driver's Miniport_* entry points and name with the NDIS library when the driver initializes。就是用刚才初始化的那个结构体注册。在public\common\oak\drivers\netsamp\passthru \miniport.c中微软提供了一系列Miniportxxxx函数的实现范例。help中对MiniportInitialize的解释是:This function is a required function that sets up a network adapter, or virtual network adapter, for network I/O operations, claims all hardware resources necessary to the network adapter in the registry, and allocates resources the driver needs to carry out network I/O operations.
接下来就是MiniportInitialize了。在其中有NIC_DRIVER_OBJECT类的初始化,以及该类的 EDriverInitialize函数调用,在此函数中全面展开了dm9000的所有初始化操作。主要是通过DeviceEntry()这个函数来实现(这个函数实现在dm9000.cpp文件中),在DeviceEntry这个函数中只做了一件事:new了一个C_DM9000类的实例并 return。这里小弟通过调试信息发现在MiniportIntialize()中做很多工作,DeviceSetDefaultSettings();DeviceSetEepromFormat();DeviceRetriveConfigurations(hconfig);EDeviceValidateConfigurations() 等等。在这里我的驱动已经读取了dm9000的ID。
C_DM9000::EDeviceInitialize
[dm9000: Chip signature is 90000A46
DM9000 EDriverInitialize EDeviceInitialize
DM9000 EDeviceRegisterInterrupt
+OALIntrEnableIrqs(1, 0x8201ef20)
+BSPIntrEnableIrq(-1).
DM9000 EDriverInitialize EDeviceRegisterInterrupt
C_DM9000::DeviceOnSetupFilter
C_DM9000::DeviceStart
C_DM9000::DeviceEnableInterrupt
这段是MiniportIntialize函数最后的些信息。
-
http://www.jd37.com/down/20074/877.html 三菱的,不知道能用不
-
google 下找不到么?
-
楼主还在做这个啊,放弃吧,这个是计算数学的范畴。你专业不对口。
-
学习中
-
关注。。
-
是这样的
-
引用 15 楼 sunrain_hjb 的回复:
我这两天也在看启动时间的问题,不过,个人觉得BOOT的启动优化效果是有限的。
一般BOOT的启动都会在1S内完成,更多的时间是加载NK和驱动。
是的啊,我粗略的测试了下,从Flash里读取内核的时间花费了5S!!基本上都是这地方占用的时间~~
不知道有没有什么好的方法?
-
OK
-
得自己开发驱动了,,比较麻烦!
网上有相关的资料!怎么写,去GOOGLE一把!