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

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

查看全部评分

慎微 回答时间: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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版