野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15116|回复: 13

请教USART1往上位机发送数据的配置

[复制链接]
发表于 2016-8-5 22:16:27 | 显示全部楼层 |阅读模式


板子是挑战者F429,按照火博士的教程,目的是按复位键后往调试助手发送255(0xFF),但是不知道我漏了哪里,粗心的我找了几遍还是找不到问题出在哪里,基础不牢,地动山摇。请火博士和各位指点指点。谢谢!


头文件gpiousart.h
#ifndef __GPIOUSART_H
#define __GPIOUSART_H


#include "stm32f4xx.h"


void gpio_usart_config(void);
void Usart_SendByte(USART_TypeDef * USARTx, uint8_t ch);


#endif

    c文件gpiousart.c
#include "gpiousart.h"
static void nvic_config(void)
{
        NVIC_InitTypeDef nvic_structure;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
       
        nvic_structure.NVIC_IRQChannel = USART1_IRQn;
        nvic_structure.NVIC_IRQChannelCmd = ENABLE;
        nvic_structure.NVIC_IRQChannelPreemptionPriority = 1;
        nvic_structure.NVIC_IRQChannelSubPriority = 1;
       
        NVIC_Init(&nvic_structure);
}


void gpio_usart_config(void)
{
        GPIO_InitTypeDef gpio_usart_structure;
        USART_InitTypeDef usart_structure;
       
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
        RCC_AHB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
       
        gpio_usart_structure.GPIO_OType = GPIO_OType_PP;
        gpio_usart_structure.GPIO_PuPd = GPIO_PuPd_UP;
        gpio_usart_structure.GPIO_Speed = GPIO_Speed_50MHz;
       
        gpio_usart_structure.GPIO_Mode = GPIO_Mode_AF;
        gpio_usart_structure.GPIO_Pin = GPIO_Pin_9;
        GPIO_Init(GPIOA,&gpio_usart_structure);
       
        gpio_usart_structure.GPIO_Mode = GPIO_Mode_AF;
        gpio_usart_structure.GPIO_Pin = GPIO_Pin_10;
        GPIO_Init(GPIOA,&gpio_usart_structure);
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);
        /******************************************/
        usart_structure.USART_BaudRate = 115200;
        usart_structure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
        usart_structure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
        usart_structure.USART_Parity = USART_Parity_No;
        usart_structure.USART_StopBits = USART_StopBits_1;
        usart_structure.USART_WordLength = USART_WordLength_8b;
        USART_Init(USART1,&usart_structure);
       
        nvic_config();
        USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
        USART_Cmd(USART1,ENABLE);       
}


void Usart_SendByte(USART_TypeDef * USARTx, uint8_t ch)
{
        USART_SendData(USARTx,ch);
        while (USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET);       
}

main函数
#include "gpiousart.h"
#include "stm32f4xx.h"


int main(void)
{
        gpio_usart_config();
        Usart_SendByte(USART1,255);
        while(1)
        {
               
        }

}


回复

使用道具 举报

发表于 2016-8-5 22:44:59 | 显示全部楼层
USART1是挂载到APB2上的
回复 支持 反对

使用道具 举报

发表于 2016-8-5 23:18:25 来自手机 | 显示全部楼层
明天上班再看看
回复 支持 反对

使用道具 举报

发表于 2016-8-5 23:20:59 来自手机 | 显示全部楼层
望蓝天 发表于 2016-8-5 22:44
USART1是挂载到APB2上的

难道真的是时钟?明天上班查询下手册再确定。
回复 支持 反对

使用道具 举报

发表于 2016-8-6 08:05:27 | 显示全部楼层
fire 发表于 2016-8-5 23:20
难道真的是时钟?明天上班查询下手册再确定。

我看了好几遍,发现没有错误,最后发现时钟不一样。。。
回复 支持 反对

使用道具 举报

发表于 2016-8-6 08:41:18 | 显示全部楼层
望蓝天 发表于 2016-8-6 08:05
我看了好几遍,发现没有错误,最后发现时钟不一样。。。

你这是学的非常扎实,确实是时钟搞错了
1.jpg
回复 支持 反对

使用道具 举报

发表于 2016-8-6 08:41:44 | 显示全部楼层
时钟开错了,怎么会打开AHB2的时钟,应该是APB2的。
回复 支持 反对

使用道具 举报

发表于 2016-8-6 09:13:01 | 显示全部楼层
fire 发表于 2016-8-6 08:41
你这是学的非常扎实,确实是时钟搞错了

我是对照着例程看的。。。。(好尴尬。)
回复 支持 反对

使用道具 举报

发表于 2016-8-6 09:18:44 | 显示全部楼层
望蓝天 发表于 2016-8-6 09:13
我是对照着例程看的。。。。(好尴尬。)

能找出这错误,也不错。继续努力
回复 支持 反对

使用道具 举报

发表于 2016-8-6 09:41:01 | 显示全部楼层
fire 发表于 2016-8-6 09:18
能找出这错误,也不错。继续努力

可以!收到火哥的一声鼓励,干劲十足。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-6 13:56:29 | 显示全部楼层
哎, 好粗心啊 , 基础不牢,地动山摇。跪谢各位!!!
回复 支持 反对

使用道具 举报

发表于 2016-8-6 13:59:25 | 显示全部楼层
呵呵呵呵 发表于 2016-8-6 13:56
哎, 好粗心啊 , 基础不牢,地动山摇。跪谢各位!!!

好好学啊,基础好重要!!!
回复 支持 反对

使用道具 举报

发表于 2016-8-6 14:11:40 | 显示全部楼层
望蓝天 发表于 2016-8-6 08:05
我看了好几遍,发现没有错误,最后发现时钟不一样。。。

厉害,火眼金睛啊
回复 支持 反对

使用道具 举报

发表于 2016-8-6 14:12:03 | 显示全部楼层
呵呵呵呵 发表于 2016-8-6 13:56
哎, 好粗心啊 , 基础不牢,地动山摇。跪谢各位!!!

基础不牢,地动山摇。火哥经常说的
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-12 16:15 , Processed in 0.034741 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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