打印
[STM8]

请问用STM8S903K3的uart1,TX端口始终无变化输出

[复制链接]
1884|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huntingfly|  楼主 | 2014-6-11 22:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,TX端口(PA3口),始终为GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_SLOW);
这里怎么设置就一直维持那个电平,并没有相应的485功能输出。

UART1_SR的0x80和0x40都有相应置位变化。

请问可能会有什么地方初始化的问题没设置好呢?

如果不行,明天再把写的相关代码发上来。
沙发
mmuuss586| | 2014-6-12 08:35 | 只看该作者
你可以先参考官方的例程;

使用特权

评论回复
板凳
huntingfly|  楼主 | 2014-6-12 08:45 | 只看该作者
#include "stm8s.h"

void Init_Clock(void)
{

    /* Select fCPU = 16MHz */
    CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);
    CLK_CCOCmd(DISABLE);
    CLK_PeripheralClockConfig(CLK_PERIPHERAL_UART1, ENABLE);
    CLK_PeripheralClockConfig(CLK_PERIPHERAL_UART2, ENABLE);

}

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_TXRX_ENABLE);
    UART1_Cmd(ENABLE);
}

void main(void)
{
        Init_Clock() ;

         Init_UART1() ;

         GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_SLOW);//tx
         GPIO_Init(GPIOF, GPIO_PIN_4, GPIO_MODE_IN_FL_NO_IT);//rx   
        while (1)
        {
                unsigned char bit_low,bit_high ;
                bit_low++ ;
                if(bit_low>200)
                {
                        bit_high++ ;
                        bit_low = 0 ;
                }
                else ;
               
                 if(bit_high>200)                {       

                                        while(UART1_GetFlagStatus(UART1_FLAG_TXE) == RESET) ;
                                       
                                        {
                                //                UART1->CR2=0x00;//a处
                                //                        UART1->CR2|=0x08;//b处
                                                        UART1_SendData8(0xB6);;//要发送的数据
                                //                }
                                                        UART1->SR &=~ 0x40 ;
                                        while((UART1->SR & 0x40) ==0);//发送是否完成
                                        }
                                                                bit_high = 0 ;
       
                                       
                }
       
       
       
       
        }
        while (1);


使用特权

评论回复
地板
huntingfly|  楼主 | 2014-6-12 08:46 | 只看该作者
本帖最后由 mmuuss586 于 2014-6-12 12:38 编辑
mmuuss586 发表于 2014-6-12 08:35
你可以先参考官方的例程;

参考了,请帮忙看下代码是否有问题。

没看出来哪里问题;
发2个例程,你参考下看看,哪里问题;
STM8官方例程.rar (15.85 MB)

寄存器版.rar (1.95 MB)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝