OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2767|回复: 2

stm32f10b站26讲的视频按照原子哥的代码写的 为什么我的串口不能发送数据,编译也没有错误 出口设置也是一样的

[复制链接]

2

主题

5

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2019-8-17
在线时间
6 小时
发表于 2019-12-7 10:54:16 | 显示全部楼层 |阅读模式
1金钱
#include "stm32f10x.h"
/************************************************
ALIENTEK 精英STM32F103开发板实验
串口实验
************************************************/ 1.png
        void My_USART1_Init(void)
        {
               
                GPIO_InitTypeDef GPIO_InitStrue;
                USART_InitTypeDef USART_InitStrue;
                NVIC_InitTypeDef  NVIC_InitStrue;
               
                RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE );//使能GPIO的时钟      ①
                RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE );//使能串口1的时钟
       
                //PA9的设置
                GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP;//输出方式为复用推免输出
                GPIO_InitStrue.GPIO_Pin=GPIO_Pin_9;//设置具体的哪一个引脚
                GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;//设置速度
                GPIO_Init(GPIOA,&GPIO_InitStrue);//I/O口的初始化                       ②
               
                //PA10的设置
                GPIO_InitStrue.GPIO_Mode=GPIO_Mode_IN_FLOATING;//输入方式为浮空或者上拉  可查中文参考手册外设的GPIO的设置
                GPIO_InitStrue.GPIO_Pin=GPIO_Pin_10;//设置具体的哪一个引脚
                GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;//设置速度
                GPIO_Init(GPIOA,&GPIO_InitStrue);//I/O口的初始化                       ②               

                //串口初始化
                USART_InitStrue.USART_BaudRate=76800;//设置波特率
                USART_InitStrue.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//没有硬件流
                USART_InitStrue.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;//使能接收和发送
                USART_InitStrue.USART_Parity=USART_Parity_No;//没有奇偶校验
                USART_InitStrue.USART_StopBits=USART_StopBits_1;//设置了一个停止位
                USART_InitStrue.USART_WordLength=USART_WordLength_8b;//字长为8个字节
               
                USART_Init(USART1,&USART_InitStrue);    //                                 ③
               
                //串口使能
                USART_Cmd(USART1,ENABLE );//   使能串口1
               
                //设置中断  在misc.c中
                USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//开启接受到数据时发生中断
               
                NVIC_InitStrue.NVIC_IRQChannel=USART1_IRQn;//在stm3210x.h的顶层头文件中
                NVIC_InitStrue.NVIC_IRQChannelCmd=ENABLE ;//开启中断通道
                NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority=1;//设置抢占优先级  只有一个中断  所以设置为1
                NVIC_InitStrue.NVIC_IRQChannelSubPriority=1;//设置子优先级
                NVIC_Init(&NVIC_InitStrue);//设置相应中断的抢占优先级和响应优先级
       
       
        }

        //中断服务函数   在启动文件中已经定义好的   startup_stm32f10x_hd.s
        void USART1_IRQHandle(void)
        {
                u8 res;
                if(USART_GetITStatus(USART1,USART_IT_RXNE))// 证明现在接受的中断是我们接受到的数据产生的中断
                {
                        res=USART_ReceiveData(USART1);   //接受串口1的数据
                        USART_SendData(USART1,res);//发送串口1的数据
                }
       
       
        }
       
int main(void)
{       

         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断优先级分组在misc.c中
          My_USART1_Init();
          while(1);
                  
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

1127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1656
金钱
1656
注册时间
2019-8-15
在线时间
102 小时
发表于 2019-12-7 13:32:48 | 显示全部楼层
帮顶                        
成功没有捷径
回复

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
发表于 2019-12-7 15:30:30 | 显示全部楼层
对照源程序看看,仿真看看能不能中断
业精于勤荒于嬉;行成于思毁于随!
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-23 13:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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