OpenEdv-开源电子网

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

菜鸟写一个简单的串口通信 为什么不能实现

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2014-3-13
在线时间
0 小时
发表于 2014-3-14 20:56:36 | 显示全部楼层 |阅读模式
#include  "stm32f10x.h"

void  usart_init(uint32_t bound);
void  USART_IRQHandler(void);
int main(void)
{
    
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
usart_init(9600);
while(1);

return 0;

}



//串口初始化函数
void  usart_init(uint32_t bound)
{
GPIO_InitTypeDef GPIO_InitStructure;
    USART_InitTypeDef  USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
//开启时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE);
//串口复位
USART_DeInit(USART1);
//初始化PA9  A10
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&GPIO_InitStructure);
//初始化串口参数
USART_InitStructure.USART_BaudRate=bound;      
USART_InitStructure.USART_WordLength=USART_WordLength_8b;
USART_InitStructure.USART_StopBits=USART_StopBits_1;
USART_InitStructure.USART_Parity=USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
USART_Init(USART1,&USART_InitStructure);

//开启中断  接收数据中断
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
//初始化NVIC
NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);

//串口使能
USART_Cmd(USART1,ENABLE);


}

//串口中断函数
void  USART_IRQHandler(void)
{
uint8_t res;
if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)!=RESET)
{
    res=USART_ReceiveData(USART1);
USART_SendData(USART1,res);//这里简单的写了一下  不知道为什么实现不了呢
}

}











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

使用道具 举报

69

主题

475

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1334
金钱
1334
注册时间
2013-12-28
在线时间
197 小时
发表于 2014-3-14 21:19:41 | 显示全部楼层
回复【楼主位】hyqhyq:
---------------------------------
STM32中中断函数的名字不是你随便去取的,而是在startup_stm32f10x_hd.s文件中已经规定好了,你自己去找找就知道了。
回复 支持 反对

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13118
金钱
13118
注册时间
2012-11-26
在线时间
3813 小时
发表于 2014-3-14 21:43:01 | 显示全部楼层
回复【楼主位】hyqhyq:
---------------------------------
一楼说的对 

有些东西是规定死的  必须按照rule来
学无止境
回复 支持 反对

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2014-2-23
在线时间
0 小时
发表于 2014-3-14 22:04:31 | 显示全部楼层
中断函数名是规定死的,要对应上才能进入中断
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2014-3-13
在线时间
0 小时
 楼主| 发表于 2014-3-15 12:34:48 | 显示全部楼层
回复【2楼】jiaozhu:
---------------------------------
恩恩  是的去  我就是在这个文件里面找的  函数名字就是我写的这样的啊
回复 支持 反对

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13118
金钱
13118
注册时间
2012-11-26
在线时间
3813 小时
发表于 2014-3-15 12:44:34 | 显示全部楼层
回复【5楼】hyqhyq:
---------------------------------
I2C1_EV_IRQHandler
I2C1_ER_IRQHandler
I2C2_EV_IRQHandler
I2C2_ER_IRQHandler
SPI1_IRQHandler
SPI2_IRQHandler
USART1_IRQHandler
USART2_IRQHandler
USART3_IRQHandler
EXTI15_10_IRQHandler
RTCAlarm_IRQHandler
USBWakeUp_IRQHandler
TIM8_BRK_IRQHandler
TIM8_UP_IRQHandler
TIM8_TRG_COM_IRQHandler
TIM8_CC_IRQHandler
ADC3_IRQHandler
FSMC_IRQHandler
SDIO_IRQHandler
TIM5_IRQHandler


楼主认真点看吧!!
学无止境
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2014-3-13
在线时间
0 小时
 楼主| 发表于 2014-3-15 12:46:36 | 显示全部楼层
回复【6楼】jermy_z:
---------------------------------
谢谢  楼主少些了个1  嘿嘿  太粗心了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 11:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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