芯片解密,芯片破解,IC解密,单片机解密,MCU解密,STM解密

飞芯科技提供芯片解密,芯片破解,IC解密,单片机解密,MCU解密,STM解密逆向服务

芯片复制GD32F470系列Rs-485驱动程序

  1. /*
  2. 芯片复制主程序如下
  3. main.c
  4. 使用中断+DMA数据搬运实现驱动RS-458
  5. */
  6. #include "gd32f4xx.h"
  7. #include "systick.h"

  8. #define USART1_DATA_ADDRESS      ((uint32_t)&USART_DATA(USART1))
  9. #define RS485BufferSize 256
  10. uint8_t RS485RxBuffer[RS485BufferSize]={0};         //485数据接收缓冲区
  11. uint8_t RS485RxP = 0;                                          //485接收缓冲区接收位置指示
  12. uint8_t RS485RxPre = 0;                                       //485帧头指示
  13. uint8_t RS485TxBuffer[RS485BufferSize]={0};                                                                                                        //485数据发送缓冲区
  14. uint8_t RS485TxP = 0;                                                                                                                                                                                                //485发送缓冲区发送位置指示
  15. uint8_t RS485RxFrameBuffer[RS485BufferSize];                                                                                                //485接收帧缓冲
  16. uint8_t RS485RxCount = 0;                                                                                                                                                                                //485接收计数
  17. uint8_t RS485RxFlag = 0;                                                                                                                                                                                //RS485帧接收完成标志,逻辑1有效



  18. /*485OE使用PE15引脚,高电平发送,低电平接收*/
  19. void Drv_485OE_Init(void)
  20. {
  21.           /* 打开GPIOE时钟 */
  22.     rcu_periph_clock_enable(RCU_GPIOE);
  23.     /* 配置PE15口为推挽输出,无上下拉 */
  24.     gpio_mode_set(GPIOE, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_15);
  25.     gpio_output_options_set(GPIOE, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_15);
  26.     /* 默认485处于接受模式 */
  27.     Drv_485_RxEn();
  28. }


  29. //        485 RX_EN
  30. void Drv_485_RxEn(void)
  31. {
  32.                 gpio_bit_reset(GPIOE, GPIO_PIN_15);
  33. }


  34. //        485 TX_EN
  35. void Drv_485_TxEn(void)
  36. {
  37.                 gpio_bit_set(GPIOE, GPIO_PIN_15);
  38. }


  39. //Rs_485初始化
  40. void Drv_Rs_485_Init(void)
  41. {

  42.                 dma_single_data_parameter_struct dma_init_struct;
  43.     /* enable GPIO clock */
  44.     rcu_periph_clock_enable(RCU_GPIOB);
  45.     /* enable UART clock */
  46.     rcu_periph_clock_enable(RCU_USART2);

  47.     /* configure the USART2 TX pin and USART2 RX pin */
  48.     gpio_af_set(GPIOB, GPIO_AF_7, GPIO_PIN_10);            //Tx
  49.     gpio_af_set(GPIOB, GPIO_AF_7, GPIO_PIN_11);                        //Rx

  50.     /* configure USART2 TX as alternate function push-pull */
  51.     gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_10);
  52.     gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_5);

  53.     /* configure USART2 RX as alternate function push-pull */
  54.     gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_11);
  55.     gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_6);

  56.     /* USART configure */
  57.     usart_deinit(USART2);                                                                                                                                                                //取消初始化USART2
  58.     usart_baudrate_set(USART2, 38400U);                                                                                                  //波特率38400U
  59.     usart_receive_config(USART2, USART_RECEIVE_ENABLE);
  60.     usart_transmit_config(USART2, USART_TRANSMIT_ENABLE);
  61.     usart_enable(USART2);
  62.                
  63.                 usart_interrupt_flag_clear(USART2, USART_INT_FLAG_ERR_ORERR);
  64.                 usart_interrupt_enable(USART2, USART_INT_ERR);
  65.                
  66.                 /* USART interrupt configuration */
  67.     nvic_irq_enable(USART2_IRQn, 2, 0);                                                                                                                                                                        //优先级为2

  68.        }        



联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.taihedz.cn
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信