OpenEdv-开源电子网

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

STM8L152R8串口通讯问题

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2015-1-22
在线时间
0 小时
发表于 2015-1-22 17:09:07 | 显示全部楼层 |阅读模式
5金钱
各位大神,刚学STM8不久,公司用的是STM8L152R8这款,我使用的USART3串口,我的程序自己检查了好多遍,没发现是什么问题,但是无法收发。。。大家帮忙看看啊,在线等。。。
#include "stm8l15x.h"
#include "usart.h"
#include "clk.h"
#include "led.h"

int main( void )
{
  //CLK_Config();
  CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_4);
  LED_Init();
  USART_Config();
  enableInterrupts();

  LED_POWER_ON();


  while(1);


#include "stm8l15x_gpio.h"
#include "stm8l15x_usart.h"
//#include "stm8l15x_adc.h"
#include "usart.h"

void USART_Config(void)
{
  //ADC_DeInit(ADC1);
  //ADC_SchmittTriggerConfig(ADC1,ADC_Channel_24To27,ENABLE);
  USART_DeInit(USART3);

  USART_Init(USART3, 
             (uint32_t)1200, \
             USART_WordLength_8b,\
             USART_StopBits_1,\
                USART_Parity_No, \
                (USART_Mode_TypeDef)(USART_Mode_Tx | USART_Mode_Rx));
  //USART_ClockInit( USART3,USART_Clock_Disable,USART_CPOL_Low,
                //  USART_CPHA_2Edge,USART_LastBit_Disable);
  //enableInterrupts();
  USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);//接收中断
  USART_ITConfig(USART3, USART_IT_TC, DISABLE);//禁止发送中断
  USART_ITConfig(USART3, USART_IT_TXE, DISABLE);
  //USART_HalfDuplexCmd(USART3,ENABLE);        
  CLK_PeripheralClockConfig(CLK_Peripheral_USART3, ENABLE);
  GPIO_ExternalPullUpConfig(GPIOF, GPIO_Pin_0, ENABLE);
  GPIO_ExternalPullUpConfig(GPIOF, GPIO_Pin_1, ENABLE);
  GPIO_Init(GPIOF,GPIO_Pin_0,GPIO_Mode_Out_PP_High_Slow);//TX3
  GPIO_Init(GPIOF,GPIO_Pin_1,GPIO_Mode_In_PU_No_IT);//RX3

  USART_Cmd(USART3, ENABLE);             
}

void USART3_SendByte(u8 data)
{
    USART_SendData8(USART3,data);
  /* Loop until the end of transmission */
  while (USART_GetFlagStatus(USART3,USART_FLAG_TXE)== RESET);//发送完成
}

void USART3_SendString(u8* Data,u16 len)
{
  u8 i=0;
  for(;i<len;i++)
    USART3_SendByte(Data);
}

u8 USART3_ReceiveByte(void)
{
     u8 USART3_RX_BUF; 
     while (USART_GetFlagStatus(USART3,USART_FLAG_RXNE) == RESET);//接收寄存器接收到数据
     USART3_RX_BUF=USART_ReceiveData8(USART3);
     return  USART3_RX_BUF;

}

下面是中断程序。。。
INTERRUPT_HANDLER(TIM3_CC_USART3_RX_IRQHandler,22)
{
     u8 i;
     LED_HUM_Toggle();
    LED_ERROR_OFF();
    i=USART3_ReceiveByte();

    USART3_SendByte(++i);
     //USART_ClearFlag(USART3,USART_FLAG_RXNE);

}

程序就是这样了,外围电路就是TX/RX加了上拉电阻,与PC端USB转串口的模块通讯,公地也是接好的,但是一直通不上,,,软件模拟根本不进中断,
大家帮忙看看啊。。谢谢了

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2015-1-22 21:45:54 | 显示全部楼层
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2015-1-22
在线时间
0 小时
 楼主| 发表于 2015-1-23 08:24:04 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢谢原子大哥
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2015-1-22
在线时间
0 小时
 楼主| 发表于 2015-1-23 08:24:30 | 显示全部楼层
今天上班依然在线等,自己也在调调
回复

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2014-9-18
在线时间
1 小时
发表于 2016-2-19 20:07:22 | 显示全部楼层
想问楼主问题解决了没?我现在也遇到这个问题。。。。
云游在代码的长河中,游出自己的风格。。。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-9-29 07:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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