初级会员

- 积分
- 53
- 金钱
- 53
- 注册时间
- 2016-4-16
- 在线时间
- 22 小时
|
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);
}
|
|