这是我做的PC端与串口交互
单片机源程序如下:
- #include "stm32f10x.h"
- void USART1_Init(void)
- {//串口参数初始化与使能时钟和GPIO端口初始化和GPIO口时钟使能
- GPIO_InitTypeDef GPIO_InitUSA;
- USART_InitTypeDef USART_InitUSA;
- RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOA,ENABLE);//使能GPIOA
- RCC_APB2PeriphClockCmd (RCC_APB2Periph_USART1,ENABLE);//使能串口1
-
-
- GPIO_InitUSA.GPIO_Mode = GPIO_Mode_AF_PP;
- GPIO_InitUSA.GPIO_Pin = GPIO_Pin_9;
- GPIO_InitUSA.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init (GPIOA,&GPIO_InitUSA);//串口1的TX引脚,设置为推挽复用输出
- GPIO_InitUSA.GPIO_Mode = GPIO_Mode_IPU;
- GPIO_InitUSA.GPIO_Pin = GPIO_Pin_10;
- GPIO_InitUSA.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init (GPIOA,&GPIO_InitUSA);//串口1的RX引脚,设置为上拉模式
-
- USART_InitUSA.USART_BaudRate = 9600;
- USART_InitUSA.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
- USART_InitUSA.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
- USART_InitUSA.USART_Parity = USART_Parity_No;
- USART_InitUSA.USART_StopBits = USART_StopBits_1;
- USART_InitUSA.USART_WordLength = USART_WordLength_8b;
- USART_Init(USART1,&USART_InitUSA);
-
- USART_Cmd (USART1,ENABLE);//使能串口
-
- USART_ITConfig (USART1,USART_IT_RXNE,ENABLE);//开启串口1的接收中断
- }
- void Init_NVIC(void)//Usart1 NVIC配置
- {
- NVIC_InitTypeDef NVIC_InitUSA;
- NVIC_InitUSA.NVIC_IRQChannel = USART1_IRQn;
- NVIC_InitUSA.NVIC_IRQChannelCmd = ENABLE;
- NVIC_InitUSA.NVIC_IRQChannelPreemptionPriority = 1;
- NVIC_InitUSA.NVIC_IRQChannelSubPriority = 1;
- NVIC_Init (&NVIC_InitUSA);
-
- }
- int main(void)
- {
- USART1_Init ();
- Init_NVIC ();
- while(1)
- {
-
- }
- }
- void USART1_IRQHandler(void)
- {
- unsigned char code;
- if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
- {
- code=USART_ReceiveData(USART1);
- USART_SendData (USART1,code);
- }
-
- }
复制代码
所有资料51hei提供下载:
串口简单通信.rar
(299.42 KB, 下载次数: 29)
|