這是我做的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)
2018-12-10 20:40 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|