找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 3916|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

STM32 MODBUS協(xié)議源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:593598 發(fā)表于 2019-8-2 15:26 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
STM32 MODBUS協(xié)議

單片機(jī)源程序如下:
  1. /**
  2.   ******************************************************************************
  3.   * @文件   
  4.   * @作者
  5.   * @版本
  6.   * @日期
  7.   * @概要
  8.   ******************************************************************************
  9.   * @注意事項(xiàng)
  10.   *
  11.   *
  12.   *
  13.   ******************************************************************************
  14.   */  

  15. /* 頭文件                --------------------------------------------------------------*/
  16. #include <stdio.h>
  17. #include "stm32f10x.h"
  18. #include "mb.h"

  19. /* 私有數(shù)據(jù)類型 --------------------------------------------------------------*/
  20. /* 私有定義         --------------------------------------------------------------*/
  21. /* 私有宏定義         --------------------------------------------------------------*/
  22. #ifdef __GNUC__
  23. /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
  24.    set to 'Yes') calls __io_putchar() */
  25. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
  26. #else
  27. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
  28. #endif /* __GNUC__ */
  29. /* 私有變量         --------------------------------------------------------------*/
  30. /* 私有函數(shù)聲明 --------------------------------------------------------------*/
  31. void LED_Config(void)
  32. {
  33.         GPIO_InitTypeDef GPIO_InitStructure;
  34.        
  35.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

  36.         GPIO_InitStructure.GPIO_Pin          = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;
  37.         GPIO_InitStructure.GPIO_Mode         = GPIO_Mode_Out_PP;
  38.         GPIO_InitStructure.GPIO_Speed         = GPIO_Speed_50MHz;

  39.         GPIO_Init(GPIOC,&GPIO_InitStructure);
  40. }


  41. /**
  42.   * @brief  Configure the nested vectored interrupt controller.
  43.   * @param  None
  44.   * @retval : None
  45.   */
  46. void NVIC_Configuration(void)
  47. {
  48.   NVIC_InitTypeDef NVIC_InitStructure;

  49.   /* Enable the TIM2 gloabal Interrupt */
  50.   NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
  51.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  52.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  53.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

  54.   NVIC_Init(&NVIC_InitStructure);

  55.   /* Enable the TIM2 gloabal Interrupt */
  56.   NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  57.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  58.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
  59.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

  60.   NVIC_Init(&NVIC_InitStructure);
  61. }

  62. /**
  63.   * @功能
  64.   * @參數(shù)
  65.   * @返回值
  66.   */
  67. int main(void)
  68. {
  69.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  70.         NVIC_Configuration();
  71.         LED_Config();
  72.        
  73.         /*模式         從機(jī)地址 端口 波特率 校驗(yàn)位*/
  74.         eMBInit( MB_RTU, 0x01, 0, 9600, MB_PAR_NONE );
  75.        
  76.         /* Enable the Modbus Protocol Stack. */
  77.         eMBEnable(  );
  78.        
  79.         for( ;; )
  80.         {
  81.          ( void )eMBPoll(  );
  82.          /* Here we simply count the number of poll cycles. */
  83.          //usRegInputBuf[0]++;
  84.         }
  85. }

  86. /**
  87.   * @brief  Retargets the C library printf function to the USART.
  88.   * @param  None
  89.   * @retval None
  90.   */
  91. PUTCHAR_PROTOTYPE
  92. {
  93.   /* Place your implementation of fputc here */

  94.   /* Loop until the end of transmission */
  95.   while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
  96.   {}
  97.   /* e.g. write a character to the USART */
  98.   USART_SendData(USART1, (uint8_t) ch);       

  99.   return ch;
  100. }

  101. #ifdef  USE_FULL_ASSERT

  102. /**
  103.   * @brief  Reports the name of the source file and the source line number
  104.   *         where the assert_param error has occurred.
  105.   * @param  file: pointer to the source file name
  106.   * @param  line: assert_param error line source number
  107.   * @retval None
  108.   */
  109. void assert_failed(uint8_t* file, uint32_t line)
  110. {
  111.   /* User can add his own implementation to report the file name and line number,
  112.      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

  113.   /* Infinite loop */
  114.   while (1)
  115.   {
  116.   }
  117. }
  118. #endif
  119. /**
  120.   * @}
  121.   */


  122. /*******************************文件結(jié)尾**************************************/
復(fù)制代碼

所有資料51hei提供下載:
STM32_MODBUS.7z (196.05 KB, 下載次數(shù): 129)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表