OpenEdv-开源电子网

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

串口助手需要点击两次发送数据,STM32才能发送一次数据给串口助手。

[复制链接]

2

主题

3

帖子

0

精华

新手入门

积分
31
金钱
31
注册时间
2014-9-10
在线时间
0 小时
发表于 2014-11-5 15:11:53 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]//程序如下:需要先发送'$'才行,但是在实验中,需要点击两次发送按钮,STM32才会回一次。不知道是哪里定义错了还是需要先清除什么。 #include "stm32f10x.h" u8 uflag1=0; u8 uflag2=0; u16 rx_tp[10]; void usart_init(void) { GPIO_InitTypeDef GPIO_InitStruct; USART_InitTypeDef USART_InitStruct; NVIC_InitTypeDef NVIC_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD,ENABLE); USART_DeInit(USART1); GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9; GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStruct); GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10; GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA,&GPIO_InitStruct); GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8; GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz; GPIO_SetBits(GPIOA, GPIO_Pin_8); GPIO_Init(GPIOA,&GPIO_InitStruct); GPIO_InitStruct.GPIO_Pin=GPIO_Pin_2; GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz; GPIO_SetBits(GPIOD, GPIO_Pin_2); GPIO_Init(GPIOA,&GPIO_InitStruct); USART_InitStruct.USART_BaudRate=9600L; USART_InitStruct.USART_WordLength=USART_WordLength_8b; USART_InitStruct.USART_StopBits=USART_StopBits_1; USART_InitStruct.USART_Parity=USART_Parity_No; USART_InitStruct.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None; USART_Init(USART1, &USART_InitStruct); NVIC_InitStruct.NVIC_IRQChannel=USART1_IRQn; NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=3; NVIC_InitStruct.NVIC_IRQChannelSubPriority=3; NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStruct); USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); USART_ITConfig(USART1, USART_IT_TC, ENABLE); USART_Cmd(USART1, ENABLE); } void delay(u32 z) { u32 i; for(i=0;i<z;i++); } int main(void) { u8 i; usart_init(); while(1) { if(uflag2==1) { USART_SendData(USART1,'1'); uflag2=0; } } } void USART1_IRQHandler(void) { u16 rd; if(USART_GetITStatus(USART1,USART_IT_RXNE)==SET) { rd=USART_ReceiveData(USART1); if(rd=='$') uflag2=2; if(uflag2==2) rx_tp[uflag1++]=rd; if(uflag1>5) { uflag1=0; uflag2=1; } } if(USART_GetITStatus(USART1,USART_IT_TC)==SET) { USART_ClearFlag(USART1, USART_FLAG_TC); } } [/mw_shl_code]

这个行业得zuo
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

109

主题

1606

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2222
金钱
2222
注册时间
2011-12-15
在线时间
37 小时
发表于 2014-11-5 15:15:12 | 显示全部楼层
你可以打断点看数据进入没有
专业制作STM32 物联网通信模块板,模块交流群:369840039。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-29 19:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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