×
单片机 > 单片机程序设计 > 详情

STM32F103F3P6串口中断收发

发布时间:2020-05-19 发布时间:
|

使用固件版本:STM8S_StdPeriph_Lib_V2.1.0.zip

主程序如下:
void main(void)

{

CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);

UART1_Init((uint32_t)9600, UART1_WORDLENGTH_8D,UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);

/* Enable the UART Receive interrupt: this interrupt is generated when the UART receive data register is not empty */

UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);

/* Enable the UART Transmit complete interrupt: this interrupt is generated when the UART transmit Shift Register is empty */

UART1_ITConfig(UART1_IT_TXE, ENABLE);

/* Enable UART */

UART1_Cmd(ENABLE);

/* Enable general interrupts */

enableInterrupts();

while (1)

{

}

}

中断程序如下:

#define TX_BUFFER_SIZE (countof(TxBuffer) - 1)

#define countof(a)   (sizeof(a) / sizeof(*(a)))

uint8_t TxBuffer[] = "UART1-communication using Interrupt modelsim_tyc@163.com ";

__IO uint8_t TxCounter = 0;


INTERRUPT_HANDLER(UART1_TX_IRQHandler, 17)

 {

  UART1_SendData8(TxBuffer[TxCounter++]);

if (TxCounter == TX_BUFFER_SIZE)

UART1_ITConfig(UART1_IT_TXE, DISABLE);

 }

INTERRUPT_HANDLER(UART1_RX_IRQHandler, 18)

 {

  uint8_t temp;

  /* Read one byte from the receive data register and send it back */

  temp = UART1_ReceiveData8();

  UART1_SendData8(temp);

 }




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C51 特殊功能寄存器SFR的名称和地址