STM8L152R8串口通讯问题

2019-07-19 21:23发布

各位大神,刚学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转串口的模块通讯,公地也是接好的,但是一直通不上,,,软件模拟根本不进中断,
大家帮忙看看啊。。谢谢了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
正点原子
1楼-- · 2019-07-19 22:29
 精彩回答 2  元偷偷看……
duanrungui
2楼-- · 2019-07-20 03:41
回复【2楼】正点原子:
---------------------------------
谢谢原子大哥
duanrungui
3楼-- · 2019-07-20 09:14
 精彩回答 2  元偷偷看……
杨慕斯语
4楼-- · 2019-07-20 10:45
想问楼主问题解决了没?我现在也遇到这个问题。。。。

一周热门 更多>