-
建议先从ST提供的ADC例程开始,慢慢做试验
-
谢谢版主 ! 明白了 配置有误 配置串口时,用校验位时数据位应当设为9,正常数据就是8位
-
楼主可以在发送数据前加一个字节表示地址,然后发给各个下位单片机,下位机收到地址后如果和自己相同就打开串口,否则就关闭串口
-
帮你顶
-
我也打算买个 不知道好不好用 关注中
-
ExAllocatePoolWithTag函数只有在分配NonPagedXxx类型的内存是才可以运行在DISPATCH_LEVEL级别,否则只能运行在IRQL < DISPATCH_LEVEL下,不知道楼主分配的内存PoolType设置的是什么
-
/***************************************************************
file:NAND FLASH operator
***************************************************************/
/* Includes ------------------------------------------------------------------*/
#include "fsmc_nand.h"
#include "UART.h"
#include "ecc.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
#define DATA_BUS_INPUT() LPC_GPIO2->DIR = 0x600
#define DATA_BUS_OUTPUT() LPC_GPIO2->DIR = 0x6ff
#define CLE_ENABLE 0x03f0
#define ALE_ENABLE 0x02f0
#define WE_ENABLE 0x010f
#define RE_ENABLE 0x000f
#define CE_ENABLE 0x0a0f
#define WP_ENABLE 0x090f
#define CLE_DISABLE 0x030f
#define ALE_DISABLE 0x020f
#define WE_DISABLE 0x01f0
#define RE_DISABLE 0x00f0
#define CE_DISABLE 0x0af0
#define WP_DISABLE 0x09f0
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
u32 FlashCurrentWriteSectorAddr; //当前写的扇区地址
u32 FlashCurrentReadSectorAddr; //当前读的扇区地址
u32 FlashNeedWriteBack; //需要回写的标志
u8 FlashSectorBuf[FLASH_SECTOR_SIZE];
static u32 FlashBadBlockTable[2][FLASH_BAD_BLOCKS_REMAP+1];
static u32 FlashBadBlocksCount;
static u8 FlashRemapBlockStatus[FLASH_BAD_BLOCKS_REMAP+1];
static u32 FlashLastAccessAddr;
void SystemDelay( u32 nCount ) ;
/* Private function prototypes -----------------------------------------------*/
/** pin operator ! **/
/* IO2 */
void Io2_Set(unsigned char pin){
unsigned int io_data=1;
io_data=io_data 8) ) ;
}
void EnableChip( void )
{
LPC_GPIO3->DATA = 0x3 ;
Io2_Set( 9 ) ;
Io2_Clr( 10 ) ; //chip enable
}
void DisableChip( void )
{
Io2_Set( 10 ) ; //chip disable
}
/******************************************************************************
* Function Name : System delay a while
* Description : after write cmmand , address , or data , there may be a short
* delay needed
* Input : The count
* Output : None
* Return : None
*******************************************************************************/
void SystemDelay( u32 nCount )
{
u32 nBegin ;
for( nBegin = 0 ; nBegin < nCount ; nBegin ++ )
{
nBegin = nBegin ;
}
}
/* Private functions ---------------------------------------------------------*/
/*******************************************************************************
* Function Name : FSMC_NAND_Init
* Description : Configures the FSMC and GPIOs to interface with the NAND memory.
* This function must be called before any write/read operation
* on the NAND.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void FSMC_NAND_Init(void)
{
/* first data0 -> data7 , set as gpio pin */
LPC_IOCON->PIO2_0 &= ~0x07;
LPC_IOCON->PIO2_1 &= ~0x07;
LPC_IOCON->PIO2_2 &= ~0x07;
LPC_IOCON->PIO2_3 &= ~0x07;
LPC_IOCON->PIO2_4 &= ~0x07;
LPC_IOCON->PIO2_5 &= ~0x07;
LPC_IOCON->PIO2_6 &= ~0x07;
LPC_IOCON->PIO2_7 &= ~0x07;
LPC_IOCON->PIO3_0 &= ~0x07;
LPC_IOCON->PIO3_1 &= ~0x07;
LPC_IOCON->PIO3_2 &= ~0x07;
LPC_IOCON->PIO3_3 &= ~0x07;
LPC_IOCON->PIO2_9 &= ~0x07;
LPC_IOCON->PIO2_10 &= ~0x07;
LPC_IOCON->PIO2_11 &= ~0x07;
LPC_IOCON->PIO1_9 &= ~0x07 ; /* USE FOR LED */
LPC_GPIO1->DIR = 0x001 DIR = 0x6ff ;
LPC_GPIO3->DIR = 0x0f ;
}
/* P2_11 P2_10 P2_9 P2_8 P2_7 P2_6 P2_5 P2_4 P2_3 P2_2 P2_1 P2_0*/
/* R/B.i CE.o WP.o DATA7 ------->------------------->------------------->DATA0.(i~o) */
/* P3_3 P3_2 P3_1 P3_0*/
/* CLE.o ALE.o WE.o RE.o */
/********************************************************************
********************************************************************/
void RBDetect( void )
{//This function do not work correct ...
DATA_BUS_INPUT();
PrintU32( LPC_GPIO2->DATA ) ;
//program dead here , can't detect R/B from high to low
while( (LPC_GPIO2->DATA) & 0x800 ); //wait until high to low
SystemDelay(2);
while( !((LPC_GPIO2->DATA) & 0x800) ); //wait until low to high
}
/*************************************************************************/
void WriteAddress( u8 addr)
{
EnableChip();
ChipControl( CLE_DISABLE ) ;
ChipControl( ALE_ENABLE ) ;
ChipControl( WE_ENABLE ) ;
DATA_BUS_OUTPUT();
LPC_GPIO2->DATA = addr ;
ChipControl( WE_DISABLE ) ;
ChipControl( ALE_DISABLE ) ;
DisableChip();
}
void WriteCommand( u8 cmd)
{
EnableChip();
ChipControl( ALE_DISABLE ) ;
ChipControl( CLE_ENABLE ) ;
ChipControl( WE_ENABLE ) ;
DATA_BUS_OUTPUT();
LPC_GPIO2->DATA = cmd ;
ChipControl( WE_DISABLE ) ;
ChipControl( CLE_DISABLE ) ;
DisableChip();
}
void ResetNand()
{
WriteCommand(0xff);
RBDetect();
}
void FlashInitilize( void )
{
UARTSend("begin !\r\n", 9);
FSMC_NAND_Init();
ResetNand();
}
void NandReadOneSector( u8 *pSector , u32 addr )
{
u32 i ;
u32 caAddr , cbAddr ;
caAddr = addr & 0x00000fff ;
cbAddr = ( addr & 0xfffff000 ) >> 12 ;
WriteCommand( 0x00 ) ;
WriteAddress( caAddr&0x00ff );
WriteAddress( caAddr>>8 );
WriteAddress( cbAddr&0x00ff );
WriteAddress( caAddr>>8 );
WriteCommand( 0x30 ) ;
RBDetect();
for( i = 0 ; i < 512 ; i ++ )
pSector = FlashReadDataByte();
}
void NandWriteOneSector( u8 *pSector , u32 addr )
{
u32 i ;
u32 caAddr , cbAddr ;
caAddr = addr & 0x00000fff ;
cbAddr = ( addr & 0xfffff000 ) >> 12 ;
WriteCommand(0x80);
WriteAddress( caAddr&0x00ff );
WriteAddress( caAddr>>8 );
WriteAddress( cbAddr&0x00ff );
WriteAddress( caAddr>>8 );
for(i=0;iDATA = pSector ;
ChipControl( WE_DISABLE );
DisableChip();
}
RBDetect();
WriteCommand( 0x70 ) ;
i = FlashReadDataByte();
PrintU32( i ) ;
}
void ReadId(u8 *Buf)
{
u8 i;
WriteCommand( 0x90 ) ;
WriteAddress(0x00);
for(i=0;i
-
可能你还是没有理解我的意思。
你应该使用2个通道按照我在10楼给出的图中所示,把输入信号同时送入2个通道,然后一个通道捕获上升沿,另一个通道捕获下降沿;这样就可以准确地测量输入的脉冲宽度,在输入信号的占空比为50%时,可以方便地转换为频率。如果输入信号的占空比不是50%,则在捕获中断中应能读到捕获上升沿的那个通道的再次捕获值,2次捕获值之差就是输入信号的频率。
-
我也遇到过同样的问题 怎么解答?大侠
-
原厂最便宜
-
先去看基础知识,搞懂了再编程
-
pads
-
如果之前已经Build过系统
没有错误
这此只是改变了project.bib
那么直接Copy files to release dirctory
再make run-time image即可
-
引用 5 楼 yashi 的回复:
wince6.0本身不带JAVA虚拟机,需要使用第三方软件。
对JAVA的支持怎么样,要看这个虚拟机怎么样,和wince本身没有什么太大关系。
学习
-
这个应该和CE的源代码有关,当系统检测到AC电源移除的时候就自动调用display的D4状态,不知道有没有注册表的设置进行限制,如果没有的话估计就要找源代码改了。
-
U16(无符号16位)只是你的数组中数据的类型 也就是颜色值 RGB的
-
关注……
-
sdk中包含模拟器吗?这点要先确定
-
友情帮顶下
-
定时器计时比延时函数要精确些,楼主如果想解决问题,应该把程序拿出来,大家分析下