GD32的一些通信配置

I2C、SPI、UART配置(GD32)

  • I2C初始化

  1. GPIO时钟开启

 

 

注:RCU_I2C_GPIO  是  RCU_GPIOB的宏定义

RCU_I2C       是  RCU_I2C0的宏定义

  1. GPIO设置

 

 

gpio_af_set:配置 GPIO的复用功能

gpio_mode_set:设置GPIOA引脚模式:GPIOB、复用模式、上拉模式、引脚CLK和DAT

gpio_output_options_set:设置GPIOA引脚:GPIOB、开漏输出模式、最大速度50MHz、引脚CLK和DAT

  1. I2C时钟和使能、应答信号设置

 

 

 

  • SPI初始化(with   DMA)

 

 

注:此处dmaBufLen即为转化的长度

  1. GPIO时钟开启

 

 

注:RCU_SPI_GPIO  是   RCU_GPIOA宏定义

RCU_SPI       是   RCU_SPI0宏定义

  1. GPIO设置

 

 

注:引脚设置主要是MOSI(输出,即数据),CLK(时钟),NSS

  1. DMA设置

 

 

通过DMA结构体对DMA各参数进行初始化,首先进行默认初始化,随后重置DMA通道,再根据需要进行参数自定义设置,最后初始化DMA通道,并且开启循环模式

  1. SPI设置及SPI使能

 

 

 

 

通过SPI结构体对SPI各参数进行设置,首先重置SPI,随后进行默认初始化,再根据需要进行自定义参数设置,并且初始化SPI

  1. DMA通道开启,SPI通过DMA接收开启

 

  • UART初始化(with  DMA)

  1. GPIO初始化

 

 

UART时钟在uart_config()中开启,注意output输出时模式设置是否适用

  1. UART设置

 

 

UART设置主要设置串口波特率、接收功能,但未设置

usart_word_length_set(USART0, USART_WL_8BIT);               // 帧数据字长

usart_stop_bit_set(USART0, USART_STB_1BIT);                 // 停止位

usart_parity_config(USART0, USART_PM_NONE);                 // 奇偶校验位

串口中断初始化

 nvic_irq_enable(USART0_IRQn, 0, 0);                   //使能UART中断

 usart_interrupt_enable(COM_USART, USART_INT_RBNE);   //使能串口接收中断

  • 抢占优先级,数字越小,优先级越高
  • 若抢占优先级相同,判断子优先级,同样,数字越小,优先级越高

使能了 USART0 接收中断,当 USART0 有接收到数据就会执行 USART0_IRQHandler() 函数。usart_interrupt_flag_get() 函数与 usart_flag_get() 函数类似用来获取标志位状态,但 usart_interrupt_flag_get() 函数是专门用来获取中断事件标志的,并返回该标志位状态。使用 if 语句来判断是否是真的产生 USART 数据接收这个中断事件,如果是真的就使用 USART 数据读取函数 usart_data_receive() 读取数据到指定存储区。然后再调用 USART 数据发送函数 usart_data_transmit() 把数据又发送给源设备,即 PC 端的串口调试助手。

注:USART0_IRQHandler()  在IT.c中

  1. UART_DMA设置

 

 

首先建立DMA结构体对象,开启时钟,进行DMA参数默认初始化,重置UART_DMA通道,再根据需要进行自定义参数设置,并且关闭DMA循环传输,并且进行DMA传输设置,最后开启DMA中断

4、使能UART

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值