k6+InfluxDB+Grafana配置及可视化

一、简介

Grafana是一个可视化图表平台

二、下载安装

下载官网:https://grafana.com/grafana/download

*推荐安装版,比解压版省心,不用自己配服务

下载完之后直接双击安装,一直下一步就可以了...

安装完成后,可以正常访问http://ip:3000表示安装成功

输入用户名 admin、密码 admin进入主界面,点击箭头指向,配置数据库

三、配置

1、配置influxdb数据库

ps:【精选】InfluxDB安装以及使用_vip_by的博客-CSDN博客

 

2、导入模板(http模块)

k6 模板地址参考grafana官方网站:https://grafana.com/grafana/dashboards/2587

 导入成功后即可再Dashborads中查看模板

3、自定义配置grafana模板(可以导入模板也可以自定义模板)

4、运行并上传结果到InfluxDB

k6 run --out influxdb=http://ip:8086/cpwsdb D:\k6\cpWebsocket\cpWS.js

5、grafana展示结果

导入模板展示:

自定义模板展示:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是配置STM32F030K6 ADC DMA的详细步骤和程序: 1. 启用ADC和DMA模块 在STM32CubeMX中,选中你的工程文件,然后在右侧的“Pinout & Configuration”选项卡中选择“ADC”和“DMA”。在“ADC”下面将“ADC1”模块勾选,然后在“DMA”下面将“DMA1 Channel1”勾选。 2. 配置ADC模块 在“Configuration”选项卡中选择“ADC”模块。在“Configured Channels”中选择要使用的ADC通道,然后在“Regular Conversion Mode”下面选择采样时间和采样周期。在本例中,我们将使用ADC通道0。 3. 配置DMA模块 在“Configuration”选项卡中选择“DMA”模块。在“DMA Configuration”下面,将“DMA Request Settings”设置为“Peripheral to Memory”。在“Data Width”中选择“Half-Word”,因为ADC输出是12位,需要用两个字节来存储。在“Memory Increment Mode”和“Peripheral Increment Mode”中选择“Enabled”,以便在每次传输后自动递增内存地址和外设地址。 4. 生成代码 点击“GENERATE CODE”按钮生成代码。 5. 修改main.c文件 打开生成的main.c文件,并添加以下代码: ```c #include "main.h" #include "stm32f0xx_hal.h" ADC_HandleTypeDef hadc; DMA_HandleTypeDef hdma_adc; uint16_t adcValue[1]; void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_DMA_Init(void); static void MX_ADC_Init(void); int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_DMA_Init(); MX_ADC_Init(); HAL_ADC_Start_DMA(&hadc, (uint32_t*)adcValue, 1); while (1) { // 这里可以添加其他代码 } } void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct; RCC_ClkInitTypeDef RCC_ClkInitStruct; __HAL_RCC_PWR_CLK_ENABLE(); __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { Error_Handler(); } RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) { Error_Handler(); } } static void MX_ADC_Init(void) { ADC_ChannelConfTypeDef sConfig; hadc.Instance = ADC1; hadc.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV1; hadc.Init.Resolution = ADC_RESOLUTION_12B; hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc.Init.ScanConvMode = DISABLE; hadc.Init.EOCSelection = ADC_EOC_SINGLE_CONV; hadc.Init.LowPowerAutoWait = DISABLE; hadc.Init.ContinuousConvMode = DISABLE; hadc.Init.NbrOfConversion = 1; hadc.Init.DiscontinuousConvMode = DISABLE; hadc.Init.ExternalTrigConv = ADC_SOFTWARE_START; hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; hadc.Init.DMAContinuousRequests = ENABLE; hadc.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN; hadc.Init.OversamplingMode = DISABLE; if (HAL_ADC_Init(&hadc) != HAL_OK) { Error_Handler(); } sConfig.Channel = ADC_CHANNEL_0; sConfig.Rank = ADC_RANK_CHANNEL_NUMBER; sConfig.SamplingTime = ADC_SAMPLETIME_13CYCLES_5; if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK) { Error_Handler(); } } static void MX_DMA_Init(void) { hdma_adc.Instance = DMA1_Channel1; hdma_adc.Init.Direction = DMA_PERIPH_TO_MEMORY; hdma_adc.Init.PeriphInc = DMA_PINC_DISABLE; hdma_adc.Init.MemInc = DMA_MINC_ENABLE; hdma_adc.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; hdma_adc.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; hdma_adc.Init.Mode = DMA_CIRCULAR; hdma_adc.Init.Priority = DMA_PRIORITY_LOW; if (HAL_DMA_Init(&hdma_adc) != HAL_OK) { Error_Handler(); } __HAL_LINKDMA(&hadc,DMA_Handle,hdma_adc); } void Error_Handler(void) { while(1) { } } #ifdef USE_FULL_ASSERT void assert_failed(uint8_t *file, uint32_t line) { } #endif ``` 6. 编译并下载 编译并下载程序到STM32F030K6开发板中。此时,ADC将开始采样并通过DMA将数据传输到内存中。 注意:在实际应用中,需要根据具体的需求对ADC采样时间和DMA传输模式进行调整。同时,需要根据具体的外设和接口进行相应的配置和连接。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值