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

小白初试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多秒,但是事实是不闪的
ts2000 回答时间: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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版