-
ST的技术支持是这样的,我们也很头疼
-
120MHz的应该很快会出来的
-
ASIC 可以工作在16模式下。
但每个地址 对应数据是 1byte
这段话不理解:ASIC 工作在16位模式,为什么每个地址 对应数据是 1byte,而不是1个16位的字? ...
因为 ASIC 就是这样设计的。
对奇数地址访问时禁止的。
-
那你就不用配置USE_STDPERIPH_DRIVER罢 用你自已编写的就好了,再说了CONF.h的文件又不是不能改!
你不用的头文件 完全可以引掉.
看你也是老手了,为何会出此下问!
-
我测试stc的看门狗就发现了这个问题,当系统电源波动的时候,死了就起不来了,确实和外部看门狗的性能区别较大,但是电源切换不应该有什么问题吧。
-
--
-
引用 3 楼 jianmin09 的回复:
了解原理先,代码多看几遍就懂了。
也只能如此了。
-
不好意思,说错了,Branch指令用了8位来进行指令编码,所以用来表示地址范围的就只剩下24位了,因为目标地址的低2位始终为0,所以可以表示26位的地址,也就是正负32MB。
BTY,为什么我不能编辑自己的帖子?
-
这个就是我的完整程序
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit RS = P2^5;
sbit RW = P2^6;
sbit E = P2^7;
void Delay(uint);
uchar Read1602(bit a);
void Write1602(uchar a,bit b);
uchar Convert(uchar In_Date);
void WriteChar(uchar x,uchar y,uchar ch);
void Initialize(void);
void WtiteString(uchar x,uchar y,uchar *p) ;
void main(void)
{
Initialize();//初始化液晶
WriteChar(5,1,'A');//在第液晶第1行第6个位置会显示一个“A”
Delay(500);//延时500ms
WriteChar(5,2,''B');//如果没有执行上面那条500ms延时的语句,在第液晶第2行第6个位置会显示一个“B”
//如果执行了上面那条500ms延时的语句,在第液晶第2行第6个位置不会有任何反应
//我试过,如果改为200ms的延时,是可以正常在第液晶第2行第6个位置会显示一个“B”的
while(1);
}
void Initialize(void)
{
Delay(50);
Write1602(0x38,0);
Write1602(0x08,0);//关显示
Delay(2);
Write1602(0x01,0);//1> 数据指针清零 2> 所有显示清零
Delay(2);
Write1602(0x0f,0);
Delay(2);
Write1602(0x06,0);//
}
/************************************************************************/
/* 函数名称 :WriteChar
/* 功能 :读液晶
/* 参数 :1> uchar x: 待显示的字符的横坐标
/* :2> uchar y: 待显示的字符的枞坐标
/* :3> uchar ch: 待显示的字符
/* 返回值 :无
/* 调用函数 :void Write1602(uchar a,bit b)
/*
/* 用到的全局变量:
/************************************************************************/
void WriteChar(uchar x,uchar y,uchar ch)
{
uchar z;
z=128+x+64*(y-1);
Write1602(z,0);
Write1602(ch,1);
}
void WtiteString(uchar x,uchar y,uchar *p)
{
uchar z;
z=128+x+64*(y-1);
Write1602(z,0);
while(*p!='\0')
{
Write1602(*p,1);
p++;
}
}
/************************************************************************/
/* 函数名称 :Read1602
/* 功能 :读液晶
/* 参数 :1> bit a: a = 0 时读液晶状态 a = 1 时读液晶数据
/* 返回值 :uchar temp1
/* 调用函数 :uchar Convert(uchar In_Date)
/*
/* 用到的全局变量:
/************************************************************************/
uchar Read1602(bit a)
{
uchar temp1;
if(a==0)//读状态
{
E = 0;
RS = 0;
RW = 1;
E = 1;
temp1=P0;
E=0;
}
if(a==1)//读数据
{
E = 0;
RS = 1;
RW = 1;
E = 1;
temp1=P0;
E=0;
}
return Convert(temp1);
}
/************************************************************************/
/* 函数名称 :Write1602
/* 功能 :写液晶
/* 参数 :1> uchar a: 持写入液晶的数据
/* 2> bit b: b = 0 时给液晶写指令 b = 1 时给液晶写数据
/* 返回值 :无
/* 调用函数 :uchar Convert(uchar In_Date)
/*
/* 用到的全局变量:
/************************************************************************/
void Write1602(uchar a,bit b)
{
if(b==0)//写指令
{
E = 0;
RS = 0;
RW = 0;
P0 = Convert(a);
E = 1;
_nop_();
E = 0;
}
if(b==1)//写数据
{
E = 0;
RS = 1;
RW = 0;
P0 = Convert(a);
E = 1;
_nop_();
E = 0;
}
}
/********************************************************************
* 名称 : Convert(uchar In_Date)
* 功能 : 因为电路设计时,P0.0--P0.7接法对应的是液晶的D7--D0,所以设计该函数。
* 输入 : 1602资料上的值
* 输出 : 送到1602的值
***********************************************************************/
uchar Convert(uchar In_Date)
{
uchar i, Out_Date = 0, temp = 0;
for(i=0; i> i) & 0x01;
Out_Date |= (temp
-
首先得检测ID引脚的高低从而判断是Device还是Host吧?
-
这个问题貌似是 实际代码超越了eboot.bib的限制了
-
既然你是学软件的,那对汇编应该有一定的了解了,那么说来的话,你对微机原理应该是懂一些的,这样的话学单片机还会是比较快的。如果之前没有接触过汇编,只用过高级语言,例如C,C++,VB,…………之类的话,那建议先买块实验板,写些程序,过段时间应该就可以了,逐渐的在学io口,中断,串口……………………,慢慢的就通了。祝你成功!
-
这个程序我也阅读了,但还没测试,期待LZ成功后分享一下经验
-
uo和ui是反相的,ic在Rc上产生压降,uo=U-ic*Rc=U-B*ib*Rc,B是电流放大倍数
-
是的,自己努力什么都可以成功
-
香水城
大哥,CM3功耗很大啊,比CM0大很多啊,你有什么资料能证明CM3总体功耗小于CM0。
作为内核,CM3的功耗确实比CM0大不少,但是内核在MCU整体功耗的比例只有不到1/4,MCU整体功耗还包含各种内置外设、Flash和SRAM等,尤其是内置外设是功耗大头;因此从整个MCU的功耗来看,内核所减少的功耗只有约4%,在整个应用系统中就显得微不足道了。
-
楼主连波特率都不懂的话,看来硬件知识不过关,建议先看一下计算机硬件方面的书籍,了解了计算机基本原理,计算机接口之类的基础硬件知识,再来学嵌入式,嵌入式软件与硬件是密切相关的,一定要有硬件的基础知识才行
-
楼上的正解,除非你再注册一个ConInstall.
-
来关注一下
-
厂家的vendor id + product id就定义了那是什么厂家的什么产品了。你打个电话问问厂家就可以知道你用的蓝牙设备芯片是什么id的。
另外,class也可以。
http://www.usb.org/developers/defined_class/#BaseClassE0h