你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

小白初试UART,stm8s003+rs485,移植例程,失败了,求大神讲解

[复制链接]
熊走了 提问时间:2016-11-29 18:57 /
这是发送板#include "stm8s.h"
#include "stm8s_clk.h"
#include "stm8s_gpio.h"
#include "stm8s_iwdg.h"
#include "delay.h"

void Delay(uint16_t nCount)
{
  /* Decrement nCount value */
  while (nCount != 0)
  {   
    nCount--;
  }
}

void Init_UART1(void)
{
        UART1_DeInit();
        UART1_Init((u32)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TX_ENABLE);
       
        UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);

//        UART1_Cmd(ENABLE);
}
void Send(uint8_t dat)
{
        while(( UART1_GetFlagStatus(UART1_FLAG_TXE)==RESET));
       
        UART1_SendData8(dat);
        Delay_ms(100);
       
}

void GPIO_init(void)
{
  GPIO_DeInit(GPIOA);
  GPIO_DeInit(GPIOB);
  GPIO_DeInit(GPIOC);
  GPIO_DeInit(GPIOD);
}

void main(void)
{
      uint8_t i = 0;
      CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
      Init_UART1();
      GPIO_init();
      enableInterrupts();
      GPIO_WriteHigh(GPIOD,GPIO_PIN_2);
/* Infinite loop */
      while (1)
      {   
          led(1);
          Send(i);
          i++;
          if(i>250)
          {
            i=0;
          }
      }  
}

这是接收板
#include "stm8s.h"
#include "stm8s_clk.h"
#include "stm8s_gpio.h"
#include "stm8s_iwdg.h"
#include "delay.h"
#include "led.h"

void Delay(uint16_t nCount)
{
  /* Decrement nCount value */
  while (nCount != 0)
  {   
    nCount--;
  }
}

void Init_UART1(void)
{
        UART1_DeInit();
        UART1_Init((u32)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_RX_ENABLE);
       
        UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);

//        UART1_Cmd(ENABLE);
}
void    Receive(uint8_t dat)
{
        while(( UART1_GetFlagStatus(UART1_FLAG_TXE)==RESET));
       
        UART1_ReceiveData8();
        Delay_ms(100);
       
}

void GPIO_init(void)
{
  GPIO_DeInit(GPIOA);
  GPIO_DeInit(GPIOB);
  GPIO_DeInit(GPIOC);
  GPIO_DeInit(GPIOD);
}

void main(void)
{
      uint8_t  a= 100 ;
      uint8_t  i;
      CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
      Init_UART1();
      GPIO_init();
      enableInterrupts();
      GPIO_WriteLow(GPIOC,GPIO_PIN_7);
/* Infinite loop */
      while (1)
      {   

          Receive(i);
          if(a>i )
          {
            led(1);
            Delay_ms(50);
            led(0);
          }
          else
          {
            led(0);
          }
      }
}

[img]file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\919222560\QQ\WinTemp\RichOle\D2[$328]7EAG5Q]K)L]D(7X.png[/img]

收藏 1 评论3 发布时间:2016-11-29 18:57

举报

3个回答
熊走了 回答时间:2016-11-29 18:59:10
预期的目标是接收板的LED能闪10多秒,但是事实是不闪的
小小超 回答时间:2016-11-30 08:20:46
void GPIO_init(void)
{
  GPIO_DeInit(GPIOA);
  GPIO_DeInit(GPIOB);
  GPIO_DeInit(GPIOC);
  GPIO_DeInit(GPIOD);
}


这不是初始化GPIO,是复位而已,你没初始化 吧??

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

熊走了 回答时间:2016-11-30 10:55:00
ts2000 发表于 2016-11-30 08:20
void GPIO_init(void)
{
  GPIO_DeInit(GPIOA);

void GPIO_init(void)
{
  GPIO_Init(GPIOC,GPIO_PIN_7,GPIO_MODE_OUT_PP_HIGH_FAST);
  GPIO_Init(GPIOD,GPIO_PIN_2,GPIO_MODE_OUT_PP_HIGH_FAST);
}

后来改了,还是不行,好像是接收的数据不对

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版