STC8H1K28必须加上串口2初始化,SPI才能正常工作
void drv_uart_init( ) //11.0592M{
//引脚配置 部分51单片机不需要
//TX配置为输出 RX配置为输入
S2CON = 0x50;
AUXR |= 0x04;
T2L = 0xe0; //65536-11059200/115200/4=0FFE8H
T2H = 0xfe;
AUXR |= 0x10; //启动定时器
IE2 |= ES2; //使能串口中断
EA = 1;
}
void SPI_Init(void)
{
P_SW1 |= 0x0c; //SPI: SS(P3.5), MOSI(P3.4), MISO(P3.3), SCLK(P3.2)
// SPI_NSS = 1;
SPCTL = 0xd0; //使能SPI主机模式
SPSTAT |= 0xc0;
}
//#ifdef __RF24L01_TX_TEST__
// drv_uart_init( ); 程序中加上这段,SPI无线模块能正常通讯,去掉就不行,函数里面挨个屏蔽少一句都不行
//#endif
后面所有调用串口的都删掉也不行,按道理这两个没关联的,请教下是什么原因
NRF24L01_Init(); //NRF24L01
ReadNbyte(0,iapeeprom_data,4);
XD=iapeeprom_data;
TX_ADDRESS= iapeeprom_data;
tmp_buf=iapeeprom_data;
tmp_buf=iapeeprom_data;
NRF24L01_TX_Mode(); /* ??è?TX?£ê? */
// drv_delay_ms( 100 );
while( 1 )
{
//发送
WSD_Get();
if (NRF24L01_TxPacket(tmp_buf) == TX_OK) /* ·¢?í3é1| */
{
}
PCON = 0x02; //MCU进入掉电模式
}
主程序都在这了,还有IO口初始化没发了 主循环里面MCU进入掉电模式后通过什么方式唤醒MCU?
PCON = 0x02; //MCU进入掉电模式 WKTCL = 0xff; //设定掉电唤醒时钟约为1秒钟
WKTCH = 0x8F;
漏掉了这句没发,完整程序发不了
lyl1011 发表于 2024-6-3 16:07
WKTCL = 0xff; //设定掉电唤醒时钟约为1秒钟
WKTCH = 0x8F;
漏掉了这 ...
PCON = 0x02; 后面要加几个NOP,等待MCU唤醒时钟稳定后再执行有效代码。
EA = 1;开启总中断代码在"drv_uart_init"串口初始化函数里面,项目里还有使用其它中断的吗?
先将休眠指令屏蔽,确保主循环能够执行到SPI收发程序,用示波器测量SPI SCK脚,看看是否有信号产生。 void ADC_config(void)
{
ADC_InitTypeDef ADC_InitStructure; //结构定义
ADC_InitStructure.ADC_SMPduty = 31; //ADC 模拟信号采样时间控制, 0~31(注意: SMPDUTY 一定不能设置小于 10)
ADC_InitStructure.ADC_CsSetup = 0;
ADC_InitStructure.ADC_CsHold = 1; //ADC 通道选择保持时间控制 0,1(默认),2,3
ADC_InitStructure.ADC_Speed = ADC_SPEED_2X16T; //设置 ADC 工作时钟频率 ADC_SPEED_2X1T~ADC_SPEED_2X16T
ADC_InitStructure.ADC_AdjResult = ADC_RIGHT_JUSTIFIED; //ADC结果调整, ADC_LEFT_JUSTIFIED,ADC_RIGHT_JUSTIFIED
ADC_Inilize(&ADC_InitStructure); //初始化
ADC_PowerControl(DISABLE); //ADC电源开关, ENABLE或DISABLE
NVIC_ADC_Init(DISABLE,Priority_0); //中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
}
ADC样例里面的应该没开吧,非常感谢,我再试试,也就用串口,spi,adc三个模块 // ADC_config();
// WSD_Get();
// PCON = 0x02; //MCU进入掉电模式
其他中断全部屏蔽还是要开串口,SPI才正常,芯片内部是不是有关联啊 串口开了功耗很大,真是奇怪 我觉得你先别管 功耗了,,先把功能实现了,,,再纠结功耗的事情,
串口 和 SPI 没有关系,,都是独立的器件,,大概率你用法不太对 功能都实现了,就差低功耗了,跟用法没关系吧,按道理怎么都不该影响的
页:
[1]