OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3430|回复: 2

STM8S105,串口接收中断无法进入,麻烦大家帮我看是什么原因

[复制链接]

5

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2013-3-6
在线时间
9 小时
发表于 2017-1-20 13:48:30 | 显示全部楼层 |阅读模式
1金钱
STM8S105,串口接收中断无法进入,麻烦大家帮我看是什么原因。谢谢。main.c:

[mw_shl_code=c,true]#include "uart2.h"

void main(void){
    clock_Config();//时钟设置
    uart2_Config();//串口2初始化配置
    enableInterrupts();//允许中断
    while(1){
    Delayms(1000);
    UART_Send("send OK\n", 8);
    }
}


//串口接收中断
#pragma vector=0x17
__interrupt void UART2_RX_IRQHandler(void){
  Delayms(1000);
    if (UART2_GetFlagStatus(UART2_FLAG_RXNE) != RESET){//接受数据寄存器非空
      Delayms(1000);
        UART_send_byte(UART2_ReceiveData8());//将接收到的数据发回去
    }
}[/mw_shl_code]


uart2.c

[mw_shl_code=applescript,true]#include "uart2.h"

/*时钟配置*/
void clock_Config(void){
    //==启用外部晶振函数==
     CLK_DeInit();                                      //时钟各变量初始化
     CLK_HSECmd(ENABLE);                                //外部高速晶振使能
     while(SET != CLK_GetFlagStatus(CLK_FLAG_HSERDY)); //测试外部高速晶振位是不是使能
     CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);           //外部时钟预分频器,1分频
     CLK_ClockSwitchCmd(ENABLE);                        //使能时钟切换功能
     CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO,CLK_SOURCE_HSE,DISABLE,CLK_CURRENTCLOCKSTATE_DISABLE);//时钟切换 ( 自动切换模式 , 切换到外部高速晶振 , 禁止切换中断 ,内部时钟禁止 )
}

/*串口2初始化配置*/
void uart2_Config(void){
    UART2_DeInit();
    UART2_Init((u32)115200, UART2_WORDLENGTH_8D, UART2_STOPBITS_1, UART2_PARITY_NO , UART2_SYNCMODE_CLOCK_DISABLE , UART2_MODE_TXRX_ENABLE);//波特率,字节数,1个停止位,无奇偶效验位,非同步模式,允许接受和发送
    UART2_ITConfig(UART2_IT_RXNE_OR,ENABLE);//开接收中断
    UART2_Cmd(ENABLE );
}

/*发送1字节数据*/
void UART_send_byte(uint8_t byte){
    UART2_SendData8((unsigned char)byte);
    while (UART2_GetFlagStatus(UART2_FLAG_TXE) == RESET);//发送数据为空
}               

/*发送长度为“uint16_t Length”的数据*/
void UART_Send(uint8_t *Buffer, uint16_t Length){
    uint16_t l=0;
    for(;l<Length;l++)
    UART_send_byte(Buffer[l]);
}[/mw_shl_code]

uart2.h

[mw_shl_code=applescript,true]#ifndef __UART2_H
#define __UART2_H

#include "stm8s.h"
#include "stm8s_clk.h"
#include <stdio.h>

void clock_Config(void);//时钟设置
void uart2_Config(void);//串口2初始化配置
void UART_send_byte(uint8_t byte);//发送1字节数据
void UART_Send(uint8_t *Buffer, uint16_t Length);//发送长度为“uint16_t Length”的数据

void Delayus(void);
void Delayms(unsigned int time);

#endif[/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

惭愧惭愧,我把串口线接错了。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2013-3-6
在线时间
9 小时
 楼主| 发表于 2017-1-20 13:48:31 | 显示全部楼层
惭愧惭愧,我把串口线接错了。。。
回复

使用道具 举报

8

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
215
金钱
215
注册时间
2016-8-3
在线时间
83 小时
发表于 2017-2-25 15:58:36 | 显示全部楼层
多谢大哥带我入门,我是来自某地的一个初中生,今年刚上初三。从遇到STM8,我就疯狂的爱上了它,再次感谢大哥。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 05:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表