-
可以参考这个文档:《STM32F10xxx的Cortex-M3编程手册》http://www.stmcu.org/download/index.php?act=down&id=328
或到ARM网站下载相应文档:Cortex-M3 Reference Manual
-
最好不要使用动态存储分配
-
vxworks不一定要MMU,ARM7就没有MMU,但可以在ARM7上跑.主要是看BSP支持否.
-
源代码:
my_usb.c.rar (2.86 KB)
下载次数: 9
2010-8-31 22:01
my_usb.h.rar (2.01 KB)
下载次数: 7
2010-8-31 22:01
显示的东西是用串口发出来的调试信息,我自己写的。。。
-
从cm3技术手册上来看,
STMIA.W R8!, {r4-R11}
STMDB.W R8, {R4-R11}
这两条指令的执行时间是相等的
-
谢谢各位,问题已经解决。是用记事本转存成UTF8,然后重新载入Keil工程,不保存工程,编译。除去个别非法字符,即可。所有中文即可以UTF8格式被编译。
-
要想继续,广告
回来更精彩
-
主要的配置和程序如下:
/* Configure SPI2 (PB.15/13/12) as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15|GPIO_Pin_13|GPIO_Pin_12;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
/* Configure SPI2 MISO (PB.14) as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB, &GPIO_InitStructure);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE);
/*--------------- Reset SPI init structure parameters values -----------------*/
/* Initialize the SPI_Direction member */
SPI_InitStruct->SPI_Direction = SPI_Direction_2Lines_FullDuplex;
/* initialize the SPI_Mode member */
SPI_InitStruct->SPI_Mode = SPI_Mode_Master;
/* initialize the SPI_DataSize member */
SPI_InitStruct->SPI_DataSize = SPI_DataSize_8b;
/* Initialize the SPI_CPOL member */
SPI_InitStruct->SPI_CPOL = SPI_CPOL_Low;
/* Initialize the SPI_CPHA member */
SPI_InitStruct->SPI_CPHA = SPI_CPHA_1Edge;
/* Initialize the SPI_NSS member */
SPI_InitStruct->SPI_NSS = SPI_NSS_Hard;
/* Initialize the SPI_BaudRatePrescaler member */
SPI_InitStruct->SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;
/* Initialize the SPI_FirstBit member */
SPI_InitStruct->SPI_FirstBit = SPI_FirstBit_MSB;
/* Initialize the SPI_CRCPolynomial member */
SPI_InitStruct->SPI_CRCPolynomial = 7;
SPI_Init(SPI2,SPI_InitStruct);
SPI_Cmd(SPI2,ENABLE);
SPI_SSOutputCmd(SPI2,ENABLE);
while(1)
{
SPI_I2S_SendData(SPI2,0x30);
while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) != RESET); //等待发送完成
Decrement_TimingDelay();
}
-
调用muxShow和ifShow后的信息如下:
> muxShow
Current mode: NORMAL
Device: fei Unit: 0
Description: Intel 82557 Ethernet Enhanced Network Driver
Protocol: IP 4.4 ARP Type: 2054 Recv 0x390500 Shutdown 0x390930
Protocol: IP 4.4 TCP/IP Type: 2048 Recv 0x390500 Shutdown 0x3907f0
Device: dm Unit: 0
Description: DM9000A Ethernet Enhanced Network Driver
Protocol: IP 4.4 ARP Type: 2054 Recv 0x390500 Shutdown 0x390930
Protocol: IP 4.4 TCP/IP Type: 2048 Recv 0x390500 Shutdown 0x3907f0
value = 0 = 0x0
-> ifShow"dm"
dm (unit number 0):
Flags: (0x8963) UP BROADCAST RUNNING ARP PROMISCUOUS MULTICAST
Type: ETHERNET_CSMACD
Internet address: 192.168.22.7
Broadcast address: 192.168.22.255
Netmask 0xffffff00 Subnetmask 0xffffff00
Ethernet address is 00:01:02:03:04:05
Metric is 0
Maximum Transfer Unit size is 1500
0 packets received; 1 packets sent
0 multicast packets received
0 multicast packets sent
0 input errors; 0 output errors
0 collisions; 0 dropped
value = 0 = 0x0
然后ping 包,发现先进入link status changed的中断,然后进入收中断,包的状态信息显示:
0xf6d1478 (tNetTask): crc error !
0xf6d1478 (tNetTask): Physical Layer error !
(我是用logMsg输出的打印信息)
各位大大,知道是什么原因么?
-
_crol_ 字符循环左移
_cror_ 字符循环右移
楼主 你这样的用功能 用查表最方便了,呵呵
void main()
{ int i=0;
while(1)
{
temp=0xfe;
for(i=0;i
-
留恋2009,畅想2010。
-
SQLCE
-
电源系统就是万物的基石!!
电源有问题,的确 什么问题都可能发生。
-
还有一个问题没有弄清楚,pci的bar是一个32位的寄存器,其中0位是表明映射到io地址还是内存地址,但是映射的具体地址是由哪些位决定的?怎样通过bar的值得到映射的地址的值呢?
-
我给楼请再提一下意见,仅供参考:)
楼主需要注意你的屏幕的色深,一般来讲,现在wince上的屏幕都是用的565的位图(65535色),所以你在旋转之前,要保证图已经是565的了,
另如果做565的bitblt,我bitblt一个480x272的位图,差不多3ms左右.
引用 6 楼 daredjever 的回复:
引用 5 楼 wceui 的回复:
楼主,我深入做过这方面的研究,旋转效率非常高,但限制于90/180/270度旋转,这在做看图的时候足够了,但如果您想任意角度旋转,无论如何都不会效率高的,光是sin,cos运算,还有浮点运算,以现在wince400M的CPU我觉得还不足以完成这些事情.
实现方法为:
采用CreateDibSection可以得到位图的每个点的像素,你把这些像素的内存重新组织一下就可以了,如果楼主研究透了位图里面的数据是如何存放的,相信这个问题也就解开了
wceUI你好:
? ? 90度等特殊角度的旋转我也研究过几个例子,由于其计算相对简单,所以速度都是还可以接受的。我也是迫不得已才,项目要求才去做这个任意角度旋转的,我也知道wince下资源的有限问题,但是只能尽量的优化了。而且我需要旋转的还是大图,要是700*500这样的就一秒左右能完成,还勉强能接受。但是我要做的是1000*1000多点的图,这样时间就快接近两秒了。
? ? 我用的也是CreateDibSection方法,其实我追踪过,大部分时间并不是花在计算浮点数上以及旋转算法上,而是用CreateDibSection生成DIB后往里面写入数据的过程:
我用的是bitblt函数,把内存中的CBitmap拷贝到我的DIB中。这个过程花费很大的时间。我仔细查过,是因为DDB和DIB格式不一样,这个函数要转化其数据,不是简单的内存拷贝。
难度是有,资源也没办法改变,还是要去做。
打家帮忙想想有什么快速的解决方法不。
-
学过防抖动电路吗?以前做过去抖动误码仪用过,网上大把
-
查查你OALPAtoVA的返回是多少,应该也是0x91600000,否则就要跟踪进去瞧瞧。io memory都会有两个静态映射,看看你返回的是哪个。
-
还是有些水平的!
-
哈哈,劳板主大驾,谢谢你,
-
就是不进这个函数,这是为什么啊???
for (DWORD dwEndpoint = 1; dwEndpoint < ENDPOINT_COUNT; ++dwEndpoint) {
// Check the Interrupt Mask
// Check the Interrupt Status
bStatusBit = EpToIrqStatBit(dwEndpoint);
if ( (bEpMaskBits & bStatusBit) &&
(bEpIrqStat & bStatusBit) ) {
ClearEndpointInterrupt(pContext, dwEndpoint);
HandleEndpointEvent(pContext, dwEndpoint, bEpIrqStat);
RETAILMSG(1,(TEXT("PMSINGS: test========27\n")));
}
}