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

stm32 usart1 无法发送数据

[复制链接]
summyb0d075 提问时间:2019-11-24 21:20 /
串口软件没接收到数据,pin9没输出请问哪里出错了?还是硬件有问题?
void usart_init(void)
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);
    GPIO_InitTypeDef GPIO_InitStructure;
    /*gpio设置*/
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    /*gpio初始化*/  
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA,&GPIO_InitStructure);
}

void usart_config(void)
{
    USART_InitTypeDef USART_InitStructure;
    USART_InitStructure.USART_BaudRate = 9600;
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
    USART_InitStructure.USART_Parity = USART_Parity_No ;
    USART_InitStructure.USART_StopBits = USART_StopBits_1;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    USART_StructInit(&USART_InitStructure);
    USART_ClearFlag(USART1,USART_FLAG_TC); //清除发送完成标志位
    USART_Cmd(USART1,ENABLE);
}

#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_usart.h"
#include "led.h"
#include "timer.h"

int main(void)
{
    SystemInit();
    /*初始化系统,系统频率位72MHz*/
    SysTick_Init();
    usart_init();
    usart_config();
    while(1)
    {        
        USART_SendData(USART1,0x04);
        delay_ms(1000);
    }
}


收藏 评论5 发布时间:2019-11-24 21:20

举报

5个回答
techmm 回答时间:2019-11-24 23:47:57
PA9你没设置,你在PA9下面加多一句GPIO_Init(GPIOA,&GPIO_InitStructure);
mylovemcu 回答时间:2019-11-25 08:15:21
这种问题出现以后可以用仿真查看寄存器配置有没有问题

现在这种情况就是GPIO配置失败了  PA9结构体配置完了以后没有初始化配置  之后对PA10结构体配置以后就把PA9的结构体覆盖了  PA9的配置就无效了

正确的做法是配置完一个IO口就调用一次 GPIO_Init函数就没问题了

评分

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

查看全部评分

mikecai 回答时间:2019-11-25 09:02:08
这是我用cubeMX 生长成的:
    __HAL_RCC_LPUART1_CLK_ENABLE();
  
    __HAL_RCC_GPIOC_CLK_ENABLE();
    /**LPUART1 GPIO Configuration   
    PC0     ------> LPUART1_RX
    PC1     ------> LPUART1_TX
    */
    GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF8_LPUART1;
    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

评分

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

查看全部评分

dingyh1 回答时间:2019-11-27 23:19:02
可以打开memory查看寄存器的值是否配置正确
butterflyspring 回答时间:2019-12-2 12:09:41
二楼说的很对,相当于PA9没有经过初始化

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版