-
前一阵子研究过它的源码,不是死掉,是出错以后被DISABLED了。
可以用1:10的档位去观察。
-
STM8S103,在HALT状态,外部供电电压可能会慢慢降低,我想知道电压降到多少芯片会复位,和RAM数据在多少电压以下不能保持?我测试好像在2.5V就不行了
数据手册上给出的正常操作电压范围是2.95~5.5V,这包括了所有模式。
2.5V已经远远低于正常操作电压范围,肯定不能保证RAM的内容。
STM8S103_Operation_Condition.GIF
(13.57 KB)
下载次数:3
2010-9-25 10:37
-
我看到的是:
参加会议均可获得STM32超值型探索套件并且有机会获得高级对讲机和背包:
就是肯定可以获得吗?
不是肯定吗?
-
最好是实践一下
-
1.通过KEIL软件的SPI外设的窗口发现SPI-DR是有值的。且值是对的。
2.“取不出来”意思就是Regs_Value[im] = SPI_I2S_ReceiveData(SPI2);这条语句没有起作用,或者说,在SPI的下一条发送八个时钟的语句中即下一句:
while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE)==RESET);
SPI_I2S_SendData(SPI2, temp++);
才读出了本该在上一次读出的数据。
3.第二次发送时钟就是指我在开始说的:为了向从设备提供一个时钟,不是发送第二个命令字的时钟,而是为了从从设备读取数据。
不知道我描述的清楚了没有?呵呵。。。谢谢!
-
引用 2 楼 cbyibby 的回复:
你使用串口通讯来捕捉打印的话,一般数据量大是会出现接受不全或者乱码现象的。可以尝试加大波特率(需硬件支持)或者减少不必要的打印来实现,如循环打印让延时久一点
谢谢指点
不好意思,你说的捕捉打印是什么意思呢?
另外我的波特率现在已经是115200了,加不上去了
你说的循环打印时间又是什么意思呢,我现在的数据是一个一个接收的,接受的时候个数据之间没有延时(试过加延时,但效果不明显),你说的延时应该加在哪里呢?
谢谢啦
-
高手们指点我一下~谢谢了~
急~呀~
-
是不是SDK有问题
访问数据库
微软给提供了一个例子
NorthWindOleDb
是OLE DB,可以借鉴一下。
-
建议买个小开发板,学习啊MCS51.
如果有些硬件基础的,参考:
自学51很容易 入门不超出100元[图] [url=http://blog.eeworld.net/sikinzen/archive/2007/09/10/1779082.aspx][/url]
-
我看去年好像有人问过类似的问题的
-
猜错了,不是我猜的问题。
应该不是从A刚跳到B就死机了吧,从A跳到B后有一段编译器生成的启动代码,有可能是在那里出现问题了,然后进入fault了。单步调试看看吧,从A跳到B后,单步运行,看在哪里跳到fault的,不过得先找到B程序的fault的地址,因为在仿真环境下由程序A跳到B,是看不到B的代码的,只能看到汇编码和机器码。
-
好帖~~~~~~~~~~~~~~~~~~
-
改完之后,要调用waveOutSetVolume(0, volume)
volume是一个DWORD类型的变量,高位WORD是右声道,低位WORD是左声道。
-
首先前提是要有个开发板
我们公司的开发版不错哦,功能齐全
欢迎访问 www.urbetter.com
-
2楼说的对。把nk里i2C和wavedev的部分移植到eboot里应该就行了
不过不同的平台,eboot访问i2c或者reg的方式可能和nk不一样的
另外关于格式的问题,你写个小的pc程序把wav头扒了,剩下pcm用数组形式放到eboot就行了吧
-
动鼠标前就启动了
如果不懂鼠标,1分钟后又是白屏了?
这是不是屏保?
-
#ifndef __SERDBG_H__
#define __SERDBG_H__
#ifdef __cplusplus
extern "C" {
#endif
#ifdef DEBUG //2009--10--13 XQH 调试版本才打印-----整个系统要编译为DEBUG版本!!!
#define ZONE_INIT DEBUGZONE(0)
#define ZONE_OPEN DEBUGZONE(1)
#define ZONE_READ DEBUGZONE(2)
#define ZONE_WRITE DEBUGZONE(3)
#define ZONE_CLOSE DEBUGZONE(4)
#define ZONE_IOCTL DEBUGZONE(5)
#define ZONE_THREAD DEBUGZONE(6)
#define ZONE_EVENTS DEBUGZONE(7)
#define ZONE_CRITSEC DEBUGZONE(8)
#define ZONE_FLOW DEBUGZONE(9)
#define ZONE_IR DEBUGZONE(10)
#define ZONE_USR_READ DEBUGZONE(11)
#define ZONE_ALLOC DEBUGZONE(12)
#define ZONE_FUNCTION DEBUGZONE(13)
#define ZONE_WARN DEBUGZONE(14)
#define ZONE_ERROR DEBUGZONE(15)
// unofficial zones - The upper 16 zones don't show up with nice
// names in cesh, etc. because we only store mnemonics for the first
// 16 zones in DBGPARAM. But for convenience, all of my serial drivers
// use the upper 16 bits consistently as defined below.
#define ZONE_RXDATA DEBUGZONE(16)
#define ZONE_TXDATA DEBUGZONE(17)
#else
#define ZONE_INIT 0//2009--10--13 XQH DEBUGMSG不打印调试消息
#define ZONE_INIT 1//2009--10--13 XQH DEBUGMSG不打印调试消息
#define ZONE_INIT DEBUGZONE(0) //2009--10--13 XQH DEBUGMSG不打印调试消息
#define ZONE_OPEN 0
#define ZONE_READ 0
#define ZONE_WRITE 0
#define ZONE_CLOSE 0
#define ZONE_IOCTL 0
#define ZONE_THREAD 0
#define ZONE_EVENTS 0
#define ZONE_CRITSEC 0
#define ZONE_FLOW 0
#define ZONE_IR 0
#define ZONE_USR_READ 0
#define ZONE_ALLOC 0
#define ZONE_FUNCTION 0
#define ZONE_WARN 0
#define ZONE_ERROR 0
#define ZONE_RXDATA 0
#define ZONE_TXDATA 0
#endif // DEBUG
#ifdef __cplusplus
}
#endif
#endif /* __SERDBG_H__ */
DEBUGMSG (ZONE_INIT,(TEXT("[NK]++++XQH0000::COM_Open( )----\r\n")));
DEBUGMSG (ZONE_INIT,(TEXT("[NK]++++XQH0000::COM_Open( )----\r\n")));
DEBUGMSG (ZONE_INIT,(TEXT("[NK]++++XQH0000::COM_Open( )----\r\n")));//2009--10--13 XQH 在RELEASE版本下不打印-----那怕ZONE_INIT的值为1,所以在RELEASE板本下
DEBUGMSG (1,(TEXT("[NK]++++XQH0000::COM_Open( )----\r\n"))); //2009--10--13 XQH 在RELEASE版本下不打印
复制代码
-
引用 1 楼 xunjingzhpu 的回复:
运算代码是否在另一个线程中进行?如果不是试下线程应该没问题,线程中加sleep()
1, 先别这样麻烦吧
2, LZ跟下,看在执行哪部分会这么长延时?
-
先确定C#程序是否能正常运行
-
我参考U盘驱动的代码,想构造一个URB,但是没有获取到设备描述符。
代码如下,大家给看看是什么错误
typedef struct tagDEVICE_EXTENSION {
PDEVICE_OBJECT DeviceObject; // device object this extension belongs to
PDEVICE_OBJECT LowerDeviceObject; // next lower driver in same stack
PDEVICE_OBJECT Pdo; // the PDO
IO_REMOVE_LOCK RemoveLock;
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
NTSTATUS
ReadandSelectDescriptors( IN PDEVICE_OBJECT DeviceObject )
{
KdPrint(("ReadandSelectDescriptors begin\n"));
PURB urb;
ULONG siz;
NTSTATUS ntStatus;
PUSB_DEVICE_DESCRIPTOR deviceDescriptor;
urb = NULL;
deviceDescriptor = NULL;
//Read the device descriptor
urb = (PURB)ExAllocatePool(NonPagedPool, sizeof(struct _URB_CONTROL_DESCRIPTOR_REQUEST));
if(urb)
{
siz = sizeof(USB_DEVICE_DESCRIPTOR);
deviceDescriptor = (PUSB_DEVICE_DESCRIPTOR)ExAllocatePool(NonPagedPool, siz);
if(deviceDescriptor) //注意看一下
{
UsbBuildGetDescriptorRequest(
urb,
(USHORT) sizeof(struct _URB_CONTROL_DESCRIPTOR_REQUEST),
USB_DEVICE_DESCRIPTOR_TYPE,
0,
0,
deviceDescriptor,
NULL,
siz,
NULL);
ntStatus = CallUSBD(DeviceObject, urb);
if(NT_SUCCESS(ntStatus))
{
ASSERT(deviceDescriptor->bNumConfigurations);
//ntStatus = ConfigureDevice(DeviceObject);
KdPrint(("get deviceDescriptor success!"));
}
ExFreePool(urb);
ExFreePool(deviceDescriptor);
}
else
{
ExFreePool(urb);
ntStatus = STATUS_INSUFFICIENT_RESOURCES;
}
}
else
{
ntStatus = STATUS_INSUFFICIENT_RESOURCES;
}
return ntStatus;
}
NTSTATUS
CallUSBD(
IN PDEVICE_OBJECT DeviceObject,
IN PURB Urb
)
{
PIRP irp;
KEVENT event;
NTSTATUS ntStatus;
IO_STATUS_BLOCK ioStatus;
PIO_STACK_LOCATION nextStack;
PDEVICE_EXTENSION pdx;
irp = NULL;
pdx = (PDEVICE_EXTENSION)DeviceObject->DeviceExtension;
//KeInitializeEvent(&event, NotificationEvent, FALSE);
irp = IoBuildDeviceIoControlRequest(IOCTL_INTERNAL_USB_SUBMIT_URB,
pdx->LowerDeviceObject,
NULL,
0,
NULL,
0,
TRUE,
&event,
&ioStatus);
if(!irp)
{
KdPrint(("IoBuildDeviceIoControlRequest failed\n"));
return STATUS_INSUFFICIENT_RESOURCES;
}
nextStack = IoGetNextIrpStackLocation(irp);
ASSERT(nextStack != NULL);
nextStack->Parameters.Others.Argument1 = Urb;
// IoSetCompletionRoutine(irp, (PIO_COMPLETION_ROUTINE) GetDescriptorCompletionRoutine,
// (PVOID) pdx, TRUE, TRUE, TRUE);
ntStatus = IoCallDriver(pdx->LowerDeviceObject, irp);
if(ntStatus == STATUS_PENDING)
{
//KeWaitForSingleObject(&event, Executive, KernelMode, FALSE, NULL);
ntStatus = ioStatus.Status;
}
return ntStatus;
}