搜索
查看: 865|回复: 2

[求助] stm8l051f3p6串口发送失败

[复制链接]

该用户从未签到

2

主题

2

帖子

0

蝴蝶豆

新手上路

最后登录
2020-7-7
发表于 2020-7-7 16:01:25 | 显示全部楼层 |阅读模式
想通过串口tx打印调试信息,但是始终调不通,没用中断,没用rx。示波器观察PA2始终高电平。

代码如下:

void SysClkInit(void)
{
    CLK_CKDIVR_bit.CKM = 3;
    CLK_ICKCR_bit.HSION = 1;
    CLK_SWR = 1;

    CLK_PCKENR1_bit.PCKEN15 = 1;       //USART1
    CLK_PCKENR1_bit.PCKEN10 = 1;       //TIM2

    CLK_PCKENR2_bit.PCKEN27 = 1;        //Boot ROM
    CLK_PCKENR2_bit.PCKEN20 = 1;        //ADC1
}


void SysUSART1Init(void)
{
    SYSCFG_RMPCR1_bit.USART1TR_REMAP = 1;       //USART1_TX on PA2 and USART1_RX on PA3
    PA_DDR_DDR2 = 1;            //output
    PA_ODR_ODR2 = 1;            //data
    PA_CR1_C12 = 1;             //push pull
    PA_CR2_C22 = 1;             //10M

    USART1_CR1_bit.M = 0;       //1 start bit, 8 data bits, n stop bit
    USART1_CR3_bit.STOP0 = 0;
    USART1_CR3_bit.STOP1 = 0;   //1 stop bit
    USART1_CR1_bit.PCEN = 0;    //parity disable
    USART1_BRR2 = 0x00;         //9600
    USART1_BRR1 = 0x0D;

    USART1_CR2_bit.TEN = 1;     //transmitter enable
    USART1_CR1_bit.USARTD = 0;  //usart enable
}


void UsartTxAByte(unsigned char ucData)
{
    USART1_DR = ucData;
    while (0 == USART1_SR_bit.TXE);
}
回复

使用道具 举报

该用户从未签到

14

主题

736

帖子

256

蝴蝶豆

论坛元老

最后登录
2021-4-20
发表于 2020-7-8 11:42:18 | 显示全部楼层
USART1_CR1_bit.USARTD = 0;  //usart enable

串口使能不应该是等于1吗  还是通过其他程序进行使能了??

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

1306

帖子

929

蝴蝶豆

版主

最后登录
2021-3-31
发表于 2020-7-30 11:20:25 | 显示全部楼层
库函数里不是有例程么,照着例程配置来吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-26 04:07 , Processed in 1.144357 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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