单片机源程序如下:
- #ifndef __USART_H
- #define __USART_H
- #include "stm32f10x.h"
- static void NVIC_Configuration(void)
- {
- NVIC_InitTypeDef NVIC_InitStructure;
- NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;
- NVIC_Init(&NVIC_InitStructure);
- }
- void USART_Config(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- USART_InitTypeDef USART_InitStructure;
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
-
- GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
- GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
- GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
- GPIO_Init(GPIOA,&GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
- GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
- GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
- GPIO_Init(GPIOA,&GPIO_InitStructure);
-
- USART_InitStructure.USART_BaudRate=9600;
- USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
- USART_InitStructure.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;
- USART_InitStructure.USART_Parity=USART_Parity_No;
- USART_InitStructure.USART_StopBits=USART_StopBits_1;
- USART_InitStructure.USART_WordLength=USART_WordLength_8b;
- USART_Init(USART1,&USART_InitStructure);
- USART_Cmd(USART1,ENABLE);
-
- USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
-
- NVIC_Configuration();
- USART_Cmd(USART1,ENABLE);
- }
- void usart_sendbyte(USART_TypeDef* pUSARTx,uint8_t ch)
- {
- USART_SendData(pUSARTx,ch);
- while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TXE)==RESET);
- }
- void usart_sendstring(USART_TypeDef* pUSARTx,char *str)
- {
- unsigned int k=0;
- do{
- usart_sendbyte(pUSARTx,*(str+k));
- k++;
- }while(*(str+k)!='\0');
- while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET)
- {
- }
- }
- void USART1_IRQHandler(void)
- {
- uint8_t ucTemp;
-
- if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
- {
- ucTemp= USART_ReceiveData(USART1);
- USART_SendData(USART1,ucTemp);
- }
- }
- #endif
- #include "stm32f10x.h"
- #include "usart.h"
- int main()
- {
- USART_Config();
- while(1)
- {
- usart_sendstring(USART1,"THIS");
- }
- }
复制代码
|