找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1856|回复: 1
打印 上一主题 下一主题
收起左侧

ModBus-Master-master stm32F4XX源程序

[复制链接]
跳转到指定楼层
楼主
ID:606051 发表于 2019-9-1 14:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    stm32F4XX modbus

单片机源程序如下:

  1. /* Includes ------------------------------------------------------------------*/
  2. #include "main.h"
  3. #include "stm32f0xx_hal.h"
  4. #include "modbus_master.h"
  5. /* USER CODE BEGIN Includes */

  6. /* USER CODE END Includes */

  7. /* Private variables ---------------------------------------------------------*/
  8. UART_HandleTypeDef huart2;

  9. /* USER CODE BEGIN PV */
  10. /* Private variables ---------------------------------------------------------*/

  11. /* USER CODE END PV */

  12. /* Private function prototypes -----------------------------------------------*/
  13. void SystemClock_Config(void);
  14. static void MX_GPIO_Init(void);
  15. static void MX_USART2_UART_Init(void);

  16. /* USER CODE BEGIN PFP */
  17. /* Private function prototypes -----------------------------------------------*/

  18. /* USER CODE END PFP */

  19. /* USER CODE BEGIN 0 */

  20. /* USER CODE END 0 */

  21. int main(void)
  22. {
  23.   uint8_t state=0;
  24.         uint16_t  Input_Result[2];
  25.   HAL_Init();
  26.   SystemClock_Config();
  27.   MX_GPIO_Init();
  28.         ModbusMaster_begin();
  29.   MX_USART2_UART_Init();
  30.   
  31.   while (1)
  32.   {
  33.                 uint8_t result;
  34.                 //测试Read Input Registers功能
  35.                 //从机地址0x01 ,寄存器地址 0x02 ,连续读2个寄存器地址
  36.                 result = ModbusMaster_readInputRegisters(0x01,0x2, 2);
  37.                 if (result == 0x00)
  38.                 {
  39.                         Input_Result[0] = ModbusMaster_getResponseBuffer(0x00);
  40.                         Input_Result[1] = ModbusMaster_getResponseBuffer(0x01);
  41.                 }
  42.                         HAL_Delay(1000);
  43.   }

  44. }

  45. /** System Clock Configuration
  46. */
  47. void SystemClock_Config(void)
  48. {

  49.   RCC_OscInitTypeDef RCC_OscInitStruct;
  50.   RCC_ClkInitTypeDef RCC_ClkInitStruct;

  51.     /**Initializes the CPU, AHB and APB busses clocks
  52.     */
  53.   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48;
  54.   RCC_OscInitStruct.HSI48State = RCC_HSI48_ON;
  55.   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
  56.   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  57.   {
  58.     _Error_Handler(__FILE__, __LINE__);
  59.   }

  60.     /**Initializes the CPU, AHB and APB busses clocks
  61.     */
  62.   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  63.                               |RCC_CLOCKTYPE_PCLK1;
  64.   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI48;
  65.   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  66.   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;

  67.   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
  68.   {
  69.     _Error_Handler(__FILE__, __LINE__);
  70.   }

  71.     /**Configure the Systick interrupt time
  72.     */
  73.   HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

  74.     /**Configure the Systick
  75.     */
  76.   HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

  77.   /* SysTick_IRQn interrupt configuration */
  78.   HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
  79. }

  80. /* USART2 init function */
  81. static void MX_USART2_UART_Init(void)
  82. {

  83.   huart2.Instance = USART2;
  84.   huart2.Init.BaudRate = 115200;
  85.   huart2.Init.WordLength = UART_WORDLENGTH_8B;
  86.   huart2.Init.StopBits = UART_STOPBITS_1;
  87.   huart2.Init.Parity = UART_PARITY_NONE;
  88.   huart2.Init.Mode = UART_MODE_TX_RX;
  89.   huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  90.   huart2.Init.OverSampling = UART_OVERSAMPLING_16;
  91.   huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
  92.   huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
  93.   if (HAL_UART_Init(&huart2) != HAL_OK)
  94.   {
  95.     _Error_Handler(__FILE__, __LINE__);
  96.   }
  97.   __HAL_UART_ENABLE_IT(&huart2,UART_IT_RXNE);
  98. }

  99. /** Configure pins as
  100.         * Analog
  101.         * Input
  102.         * Output
  103.         * EVENT_OUT
  104.         * EXTI
  105. */
  106. static void MX_GPIO_Init(void)
  107. {

  108.   /* GPIO Ports Clock Enable */
  109.   __HAL_RCC_GPIOA_CLK_ENABLE();

  110. }

  111. /* USER CODE BEGIN 4 */

  112. /* USER CODE END 4 */

  113. /**
  114.   * @brief  This function is executed in case of error occurrence.
  115.   * @param  None
  116.   * @retval None
  117.   */
  118. void _Error_Handler(char * file, int line)
  119. {
  120.   /* USER CODE BEGIN Error_Handler_Debug */
  121.   /* User can add his own implementation to report the HAL error return state */
  122.   while(1)
  123.   {
  124.   }
  125.   /* USER CODE END Error_Handler_Debug */
  126. }

  127. #ifdef USE_FULL_ASSERT

  128. /**
  129.    * @brief Reports the name of the source file and the source line number
  130.    * where the assert_param error has occurred.
  131.    * @param file: pointer to the source file name
  132.    * @param line: assert_param error line source number
  133.    * @retval None
  134.    */
  135. void assert_failed(uint8_t* file, uint32_t line)
  136. {
  137.   /* USER CODE BEGIN 6 */
  138.   /* User can add his own implementation to report the file name and line number,
  139.     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  140.   /* USER CODE END 6 */

  141. }

  142. #endif

  143. /**
  144.   * @}
  145.   */

  146. /**
  147.   * @}
  148. */

  149. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

复制代码

所有资料51hei提供下载:
ModBus-Master-master.7z (1.19 MB, 下载次数: 40)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:67179 发表于 2019-10-19 21:47 | 只看该作者
谢谢分享!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表