OpenEdv-开源电子网

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

初学,用战舰STM32编了一个串口程序

[复制链接]

1

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2016-4-16
在线时间
22 小时
发表于 2016-4-16 22:12:11 | 显示全部楼层 |阅读模式
1金钱
我写的程序,最初目的是:希望PC没向STM32发送信息时,STM32发送Please Send Me a Mesaage!;如果PC发送了,则STM32把PC发送的传回PC。用丁丁那个调试助手看现象。
但程序实现不了这个功能,希望大家指教下。
下面是main.c。(我没有用Alientech编写的那些sys,usart,delay的头文件和源文件)
(前面声明的几个函数都是按顺序的初始化函数)
#include <stm32f10x.h>
void RCC_USART1_GPIOA(void);
void RESET_USART1(void);
void GPIOA_MODE(void);
void USART1_Init(void);
void NVIC_IT(void);
void USART1_ENABLE(void);
void Initialize(void);
int main(void)
{
uint8_t Message1[26]="Please Send Me A Message!";
uint32_t Delay;
uint8_t i;

Initialize();

while(1)
{
  while( RESET==USART_GetFlagStatus(USART1,USART_FLAG_RXNE) ) //When STM32 receives nothing
  {
   for(i=0;i<25;i++) USART_SendData(USART1,Message1[i]);   //Require PC to send
   while( RESET==USART_GetFlagStatus(USART1,USART_FLAG_TC) );//Wait until the Sending finishes
   for(Delay=0;Delay<500;Delay++);               //Delay
  }
  
  USART_SendData(USART1,USART_ReceiveData(USART1));
  for(Delay=0;Delay<500;Delay++);
}
}
void RCC_USART1_GPIOA()
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE);
}
void RESET_USART1()
{
USART_DeInit(USART1);
}
void GPIOA_MODE()
{
GPIO_InitTypeDef GPIO_InitStructure;

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(GPIOE,&GPIO_InitStructure);
}
void USART1_Init()
{
USART_InitTypeDef USART1_Struct;
USART1_Struct.USART_BaudRate = 9600;
USART1_Struct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART1_Struct.USART_Mode = USART_Mode_Tx|USART_Mode_Rx;
USART1_Struct.USART_Parity = USART_Parity_No;
USART1_Struct.USART_StopBits = USART_StopBits_1;
USART1_Struct.USART_WordLength = USART_WordLength_8b;

USART_Init(USART1,&USART1_Struct);
}
void NVIC_IT()
{
NVIC_InitTypeDef NVIC_Struct;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

NVIC_Struct.NVIC_IRQChannel = USART1_IRQn;
NVIC_Struct.NVIC_IRQChannelPreemptionPriority = 3;
NVIC_Struct.NVIC_IRQChannelSubPriority = 3;
NVIC_Struct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_Struct);
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
}
void USART1_ENABLE()
{
USART_Cmd(USART1,ENABLE);
}
void Initialize()
{
void RCC_USART1_GPIOA(void);
void RESET_USART1(void);
void GPIOA_MODE(void);
void USART1_Init(void);
void NVIC_IT(void);
void USART1_ENABLE(void);
}

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

使用道具 举报

1

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2016-4-16
在线时间
22 小时
 楼主| 发表于 2016-4-17 18:12:05 | 显示全部楼层
回复

使用道具 举报

1

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2016-4-16
在线时间
22 小时
 楼主| 发表于 2016-4-18 20:27:13 | 显示全部楼层
自己再顶一下
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-4-23 19:06:27 | 显示全部楼层
帮顶
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-10 01:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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