新手上路
- 积分
- 21
- 金钱
- 21
- 注册时间
- 2017-4-10
- 在线时间
- 4 小时
|
楼主 |
发表于 2017-4-12 18:47:15
|
显示全部楼层
本帖最后由 fengurl 于 2017-4-12 18:48 编辑
但是我的接收程序就3条语句。请帮忙看看有什么错误的地方?
附上程序:
char feng[5];
u8 Res = 0;
void main()
{
disableInterrupts(); //关闭系统总中断
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1); //内部时钟为1分频 = 16Mhz
UART1_Init(9600); //调用串口初始化函数
enableInterrupts(); //使能系统总中断
//stm8l15x_it.c文件里的 函数 INTERRUPT_HANDLER(USART1_RX_IRQHandler, 28)
//等待USART1接收字符中断产生,中断服务函数在
while(1)
{
delay(5000);
printf("AT+RST");
delay(5000);
}
}
void UART1_Init(u16 baudrate)
{
CLK_PeripheralClockConfig(CLK_Peripheral_USART1 , ENABLE); //使能USART1时钟
USART_Init(USART1, //设置USART1
baudrate, //流特率设置
USART_WordLength_8b, //数据长度设为8位
USART_StopBits_1, //1位停止位
USART_Parity_No, //无校验
(USART_Mode_Rx | USART_Mode_Tx)); //设置为发送接收双模式
//使能接收中断
USART_ITConfig(USART1, USART_IT_RXNE , ENABLE);
USART_Cmd(USART1 , ENABLE); //使能USART1模块
}
INTERRUPT_HANDLER(USART1_RX_TIM5_CC_IRQHandler,28)
{
/* In order to detect unexpected events during development,
it is recommended to set a breakpoint on the following instruction.
*/
extern u8 Res;
extern char feng[5];
if(USART_GetITStatus(USART1,USART_IT_RXNE) != RESET)
{
USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清除中断标志位
feng[Res++] = USART_ReceiveData8(USART1); //(USART1->DR);读取接收到的数据
if(Res == 5) Res = 0;
}
} |
|