在stm8s的UART1中应该支持静默模式。
代码如下
#include "stm8s.h"
#define LED_ON GPIO_WriteLow(GPIOC,GPIO_PIN_1|GPIO_PIN_2);
#define LED_OFF GPIO_WriteHigh(GPIOC,GPIO_PIN_1|GPIO_PIN_2);
/*系統時鐘初始化設置*/
void CLK_Init(void)
{
CLK_DeInit();
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
}
/*LED初始化*/
void LED_Init(void)
{
GPIO_DeInit(GPIOC);
GPIO_Init(GPIOC,GPIO_PIN_1|GPIO_PIN_2,GPIO_MODE_OUT_PP_HIGH_FAST);
}
/*UART1初始化*/
void UART_Init(void)
{
UART1_DeInit();
/*UART1通訊波特率為9600 ,字長為8位
停止位為1位,無校驗,無同步,接收啟動*/
UART1_Init((u32)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1,
UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_RX_ENABLE);
CLK_PeripheralClockConfig(CLK_PERIPHERAL_UART1, ENABLE);//給UART1時鐘信號源
UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE); //啟動UART1接收中斷
UART1_WakeUpConfig(UART1_WAKEUP_ADDRESSMARK);//地址匹配时唤醒
UART1_SetAddress(0x02); //UART1从机地址
UART1_ReceiverWakeUpCmd(ENABLE);//使能接收唤醒
UART1_Cmd(ENABLE); //啟動UART1
}
/*主函數*/
void main()
{
CLK_Init();
LED_Init(); /*LED初始化*/
UART_Init();
enableInterrupts();//啟動全局中斷
while(1);
}
问题是我从上位机发送数据 102(从机地址为2) .为何单片机不能进入中断?
|