ABOV A31G123 串口和SPI配置

串口配置:

void UART1_Configure( void )
{
   UARTn_CFG_Type    UARTn_Config;

   /*
   * Initialize UART1 pin connect
   */
   HAL_GPIO_ConfigOutput( ( Pn_Type* )PB, 7, ALTERN_FUNC );
   HAL_GPIO_ConfigFunction( ( Pn_Type* )PB, 7, AFSRx_AF1 );
   HAL_GPIO_ConfigPullup( ( Pn_Type* )PB, 7, PUPDx_EnablePU );

   HAL_GPIO_ConfigOutput( ( Pn_Type* )PB, 6, ALTERN_FUNC );
   HAL_GPIO_ConfigFunction( ( Pn_Type* )PB, 6, AFSRx_AF1 );

   HAL_UART_ConfigStructInit( &UARTn_Config );
   HAL_UART_Init( ( UARTn_Type* )UART1, ( UARTn_CFG_Type* )( &UARTn_Config ) );
	
	 HAL_UART_ConfigInterrupt( ( UARTn_Type* )UART1, UARTn_INTCFG_RBR, ENABLE );
   HAL_UART_Transmit( ( UARTn_Type* )UART1, ( uint8_t* )"\n\rUSART SPI Interrupt test \n\r", 29, BLOCKING );
   HAL_UART_Transmit( ( UARTn_Type* )UART1, ( uint8_t* )"SPI12 master, SPI13 slave\n\r", 27, BLOCKING );
	 printf("系统初始化\n");
	 NVIC_SetPriority( UART1_IRQn, 3 );
   NVIC_EnableIRQ( UART1_IRQn );
   HAL_INT_EInt_MaskDisable( MSK_UART1 );
}

SPI配置:SPI不能开启中断,否则会导致发送数据时波特率过高而引起中断溢出死机

//SPI 射频模块
void UART11_Configure( void )
{
   USART1n_CFG_Type     USART1n_Config;

   /*
   * Initialize USART11
   */
   HAL_GPIO_ConfigOutput( ( Pn_Type* )PD, 2, ALTERN_FUNC );
   HAL_GPIO_ConfigFunction( ( Pn_Type* )PD, 2, AFSRx_AF2 );

   HAL_GPIO_ConfigOutput( ( Pn_Type* )PD, 3, ALTERN_FUNC );
   HAL_GPIO_ConfigFunction( ( Pn_Type* )PD, 3, AFSRx_AF2 );

   HAL_GPIO_ConfigOutput( ( Pn_Type* )PD, 4, ALTERN_FUNC );
   HAL_GPIO_ConfigFunction( ( Pn_Type* )PD, 4, AFSRx_AF2 );

   HAL_GPIO_ConfigOutput( ( Pn_Type* )PD, 5, PUSH_PULL_OUTPUT );
//   HAL_GPIO_ConfigFunction( ( Pn_Type* )PD, 5, AFSRx_AF2 );

   // default: 38400-8-N-1
   HAL_USART_SPI_Mode_Config( &USART1n_Config );
   HAL_USART_Init( ( USART1n_Type* )USART11, &USART1n_Config );

   // SPI Master
   HAL_USART_DataControlConfig( ( USART1n_Type* )USART11, USART1n_CONTROL_MASTER, ENABLE );

   // Slave SS Function Enable
   HAL_USART_DataControlConfig( ( USART1n_Type* )USART11, USART1n_CONTROL_USTSSEN, DISABLE );
	 
	// HAL_USART_ConfigInterrupt( ( USART1n_Type* )USART11, USART1n_INTCFG_RXC, ENABLE );
	// HAL_USART_ConfigInterrupt( ( USART1n_Type* )USART11, USART1n_INTCFG_TXC, ENABLE );
//	 NVIC_SetPriority( USART11_IRQn, 3 );
//   NVIC_EnableIRQ( USART11_IRQn );
//   HAL_INT_EInt_MaskDisable( MSK_USART11 );
   // ENABLE
   HAL_USART_Enable( ( USART1n_Type* )USART11, ENABLE );
}

printf重定向:

//重定向fputc函数
int fputc(int ch, FILE *f)		//两个标准参数
{
	//将要发送的数据通过串口1发送出来(可以用电脑上的串口调试软件接收)
	UART1->THR=ch;
	
	//等待发送是否完成
	while( !(UART1->LSR_b.THRE));
	//while( !( UART1->LSR & UARTn_LSR_THRE ) );

	return ch;
}

SPI 传输单个字节:

uint8_t drv_spi_read_write_byte( uint8_t TxByte )
{
	uint8_t l_Data = 0;
	//发送数据
	//等待发送缓冲区为空

//	HAL_USART_Transmit((USART1n_Type*)USART11,&TxByte,1,BLOCKING);
//	HAL_USART_Receive((USART1n_Type*)USART11, &l_Data, 1,BLOCKING);
//	USART11->DR = TxByte;
//  HAL_USART_Receive((USART1n_Type*)USART11, &l_Data, 1,BLOCKING);
//	UART1->THR=l_Data;
	
//	USART11->DR = TxByte;
//	drv_delay_us(200);
//	l_Data=USART11->DR;
	//UART1->THR=l_Data;
	//while(!(USART11->ST&USART1n_SR_TXC));
	
	//while(!(USART11->ST&USART1n_SR_RXC));
	
	
	USART11->DR = TxByte;
	while(!(USART11->ST_b.TXCn));
	while(!(USART11->ST_b.RXCn));
	l_Data=USART11->DR;
	
	USART10->DR=l_Data;

	USART11->ST_b.TXCn=1;//发送器空闲

//	//等待接收缓冲区为空
//	while(!(USART11->ST_b.RXCn));


	return l_Data;		//返回
}

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值