-
方案现在已经进行了更改,用STM8基本无法实现。也怪自己当时没有研究清楚,以为多通道可以实现,最近就一直忙着修改方案。北京的技术支持确实不如上海这边更全面一些(绝没有贬低北京技术支持的意思,还是很感谢他们提供的技术服务),苦于和上海这边联系不上。一打电话,响几声就一串英文出来了。
-
当然是两个硬件端口,需要同时连接两个设备,均用USB连接
需要同时连接2个设备
和
需要同时使用USB HOST和USB DEVICE
是两回事。。。。。
-
以前模拟I2C的时候,是在SDA为高的情况下,SCL强制发送9个脉冲使总线复位。
STM32里面是怎么处理的呢?置为CR1寄存器的SWRST位吗?
这样做的话,复位后,所有 相关的 寄存器啊,时钟啊那不是要重新设置啊? ...
我们给客户建议的复位是连续发9个 start stop组合。
-
解决了,我将分压电阻的阻值提高到300K左右就行了。
-
问题1:与你的操作方式有关,请具体举例说明。
问题2:
#define SPI_FRAM_CS_LOW GPIOC->BRR = GPIO_Pin_5
#define SPI_FRAM_CS_HIGH GPIOC->BSRR = GPIO_Pin_5
与
#define SPI_FRAM_CS_LOW GPIOC->BRR |= GPIO_Pin_5
#define SPI_FRAM_CS_HIGH GPIOC->BSRR |= GPIO_Pin_5
的区别在于多了一个"或",这相等于:
#define SPI_FRAM_CS_LOW GPIOC->BRR = GPIOC->BRR | GPIO_Pin_5
#define SPI_FRAM_CS_HIGH GPIOC->BSRR = GPIOC->BSRR | GPIO_Pin_5
这里有隐含的类型转换:GPIO_Pin_5是uint16_t类型,而BRR 和BSRR都是uint32_t类型。
#define SPI_FRAM_CS_LOW GPIOC->ODR &= ~GPIO_Pin_5
#define SPI_FRAM_CS_HIGH GPIOC->ODR |= GPIO_Pin_5
这样操作,是在赋值的基础上保留了原来的内容。
-
去官网下载个它的安装包,装完后
C:\Program Files\SQLite.NET\bin\CompactFramework\SQLite.Interop.066.DLL
这个文件复制到设备上,就好了~
-
非常好的讨论,顶一下:)
-
只能友情帮顶,百度谷歌后都没结果。。。
-
1、我说的那种情况的好处就是耗电基本为0,如果你想恢复挂起前的状态就一定需要SDRAM的自刷新了。
2、从FLASH LOAD image的大小对启动时间的影响不大,使用NAND FLASH的时候可能也就差个一两秒,甚至更少,NOR的你要自己试了,没用过。启动时间的差异主要系统启动时装载的内容方面,比如如果使用NAND 的FAT盘符,每多一个FAT盘符至少要增加一秒的启动时间。
-
引用 14 楼 lth93 的回复:
哪位有wince api大全,推荐一下,高分相送
这个貌似我有呢。
-
你想在PC中以U盘方式读写FLASH,那FLASH的文件系统应该和PC一样,USB就应该以usb mass storage协议方式实现,这个跟WINCE没关系了,
-
太感谢了,很有用
-
还是一样的问题,一个节点收不到另外一个节点的应答信号,发送标志位一直为1,我查了另外一个节点的接入点(82c251的RX),有波形输入啊,那硬件应该没问题啊,自检也可以啊,程序我找了好多个,难道是程序的问题?我用普通的线连起来的,大概有30cm长而已,有接终端电阻
#include "SJA_BCANCONF.H"
#include
/* 初始化SJA1000 */
unsigned char SJA1000_Config_Normal()
{
if(BCAN_CREATE_COMMUNATION()) return 1;//读写测试寄存器失败
if(BCAN_ENTER_RETMODEL()) return 2; //复位失败
if(BCAN_SET_OUTCLK (0x1a,0x88)) return 4;//设置OCR=0X1A,T0推挽输出 CDR=0X00,peli模式,输入没有启用旁路功能 时钟输出为 fOSC/2 失败
if(BCAN_SET_BANDRATE(0x00)) return 3; //设置波特率通信 失败
if(BCAN_SET_OBJECT(0x44,0x55,0x66,0x00,0x00,0x00,0x00,0x0f)) return 5;
if(BCAN_MODE_COMMUNATION(0x08)) return 8;//设置单滤波模式 包括恢复到工作模式
return 0;//初始化成功
}
#include "regx52.h" //创作时间2009-03-04
#include
#include "lcd1602.c"
#include "key.c"
#include"SJA_BCANCONF.c"
bit SuccessFlag=1;
unsigned test=1;
unsigned temp;
//
void main()
{
SJA1000_RST=1;
delay1ms(200); //启动等待,等LCD讲入工作状态
LCDInit(); //LCD初始化
SJA1000_RST=0;//SJA1000硬件复位
delay1ms(2);
SJA1000_RST=1;
delay1ms(5);
DisplayOneChar(5,0,SJA1000_Config_Normal()+'0');//SJA1000 initial
SuccessFlag=BCAN_DATA_WRITE(SendData);//发数据
if(!SuccessFlag)
{
DisplayOneChar(10, 0, '0');
BCAN_CMD_PRG(TR_CMD); //启动发送命令
}
else DisplayOneChar(10, 0, '1');
SJA_BCANAdr = REG_STATUS; //访问地址指向状态寄存器
temp=*SJA_BCANAdr;
DisplayOneChar(4, 1, temp/100+'0');//显示SR的值
DisplayOneChar(5, 1,(temp/10)%10+'0');
DisplayOneChar(6, 1,temp%10+'0');
temp&=0x20;
while(temp == 0x20) //检查是否发送完成
{
DisplayOneChar(11, 0, '1');
temp=*SJA_BCANAdr;
DisplayOneChar(4, 1, temp/100+'0');
DisplayOneChar(5, 1,(temp/10)%10+'0');
DisplayOneChar(6, 1,temp%10+'0');
temp&=0x20;
}
DisplayOneChar(11, 0, '0');
test^=1;
led3=test;//test跟踪按键的变化
}break;
SJA_BCANAdr= REG_Receive_Counter;//查看接收缓冲区中信息的个数
temp=*SJA_BCANAdr;
DisplayOneChar(14, 1, temp/10+'0');
DisplayOneChar(15, 1, temp%10+'0');
SuccessFlag=BCAN_DATA_RECEIVE(ReceiveData);//接收数据
if(!SuccessFlag)
{
DisplayOneChar(15, 0, '0');
for(k=0;k
-
这个不是没人帮忙啊,是很少有人知道怎么做
-
帮顶下,MARK/
-
一定的保护还是必要的,不然大家都山寨了
-
1。CE上不支持
2。一定要实现的话,有两种方法:
>> 为fsd添加filter(activesync)
>> PC端写一个给予usb上的驱动(mass storage)
-
ldr lr , =halt_loop
....
halt_loop:
b halt_loop
这是是在异常的时候用的吗???如果出现如未定义指令异常、指令预取异常,可能他会直接让其陷入死循环~~
main一般是在svc模式,或者usr模式下。。那个死循环的时候,还是可以响应IRQ和FIQ的
-
这个程序很简单,还是lz好好学学吧,别没开始动手呢就直接要源码
-
不好意思,仔细查看了下指令文档,MOVX指令作用是寄存器A与片外RAM间的数据传输,而不是与ROM的数据输出,
看错了,看书没仔细,我有罪啊,
反省去了...