C_stream

C++ I/O Stream

I/O libs

  • iostream.h: includes cin(standard input stream), cout(standard ouput stream),
    cerr(standard error stream without buffer), clog(standard error stream with buffer)
  • iomanip.h
  • fstream.h: file stream

  • 特别注意cerr与clog的差别

以下是每个模块的初始化和数据收发代码示例: USART1初始化代码: ``` void USART1_init(void) { // 使能USART1和DMA2时钟 RCC->APB2ENR |= RCC_APB2ENR_USART1EN; RCC->AHB1ENR |= RCC_AHB1ENR_DMA2EN; // 配置USART1引脚 GPIOA->MODER |= GPIO_MODER_MODE9_1 | GPIO_MODER_MODE10_1; GPIOA->AFR[1] |= (7 << GPIO_AFRH_AFSEL9_Pos) | (7 << GPIO_AFRH_AFSEL10_Pos); // 配置USART1 USART1->CR1 &= ~USART_CR1_UE; USART1->CR1 |= USART_CR1_TE | USART_CR1_RE | USART_CR1_RXNEIE; // 配置DMA2_Stream5_Channel4用于USART1的RX DMA2_Stream5->CR &= ~DMA_SxCR_EN; DMA2_Stream5->PAR = (uint32_t)&(USART1->DR); DMA2_Stream5->M0AR = (uint32_t)rx_buffer; DMA2_Stream5->NDTR = RX_BUFFER_SIZE; DMA2_Stream5->CR = DMA_SxCR_MINC | DMA_SxCR_CIRC | DMA_SxCR_PL_0 | DMA_SxCR_TCIE | DMA_SxCR_EN; // 配置DMA2_Stream7_Channel4用于USART1的TX DMA2_Stream7->CR &= ~DMA_SxCR_EN; DMA2_Stream7->PAR = (uint32_t)&(USART1->DR); DMA2_Stream7->M0AR = (uint32_t)tx_buffer; DMA2_Stream7->CR = DMA_SxCR_MINC | DMA_SxCR_DIR_0 | DMA_SxCR_PL_0 | DMA_SxCR_EN; // 设置中断优先级 NVIC_SetPriority(USART1_IRQn, 1); // 使能USART1和DMA2_Stream5_Channel4 USART1->CR1 |= USART_CR1_UE; DMA2_Stream5->CR |= DMA_SxCR_EN; } ``` USART1数据收发代码: ``` void USART1_IRQHandler(void) { if (USART1->SR & USART_SR_RXNE) { rx_buffer[rx_index++] = USART1->DR; if (rx_index >= RX_BUFFER_SIZE) { // 禁用DMA2_Stream5_Channel4,等待下一次接收 DMA2_Stream5->CR &= ~DMA_SxCR_EN; rx_index = 0; } } } void USART1_send(uint8_t *data, uint16_t len) { memcpy(tx_buffer, data, len); DMA2_Stream7->NDTR = len; DMA2_Stream7->CR |= DMA_SxCR_EN; while (DMA2_Stream7->CR & DMA_SxCR_EN); } ``` USART2、USART3、UART4、UART5、USART6、SPI1、SPI2、I2C1的初始化和数据收发代码类似,只需要修改对应的寄存器和引脚即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值