问答

汇集网友智慧,解决技术难题

21ic问答首页 - TAG - Benchmark
  • Work_BenchMark创建工程遇到的问题

    [i=s] 本帖最后由 zhjb1 于 2025-4-20 16:08 编辑 [/i] 采用Work_BenchMark1.1.0.8————最新版遇到的问题仅仅以ADC为例,本工程需要4路ADC加上测温一共5路,简化操作仅用ADC1.也从工程SysClock开始: [img]https://bbs.21ic.com/data/attachment/album/202504/20/154110cepeizp887am08my.jpg.thumb.jpg[/img] 采用外部晶振8MHz,sysClock=240MHz见图。 ADC的设置见下图: [img]https://bbs.21ic.com/data/attachment/album/202504/20/154111tfkb51bg1jkfmd31.jpg.thumb.jpg[/img] 设置了6个,实际只用5个,因为想用DAC1,2,所以ADC4实际指向IN6:IN1,IN2,IN3,IN6,这4个GPIO口作为ADC的4路输入。 DMA设置如下图: [img]https://bbs.21ic.com/data/attachment/album/202504/20/154111zpsggb4vv9gzg9yp.jpg.thumb.jpg[/img] 为了防止出错,本设置除了XMC之外仅仅设置了ADC1的DMA,默认为DMA1_CHANNEL5通道。 主要代码如下(为了省事与ADC无关的都顺序集中到一行): //main function. int main(void){ //system clock config. wk_system_clock_config(); wk_periph_clock_config(); wk_debug_config(); wk_nvic_config(); wk_timebase_init(); //init dma1 channel5 wk_dma1_channel5_init(); //config dma channel transfer parameter //user need to modify define values DMAx_CHANNELy_XXX_BASE_ADDR and DMAx_CHANNELy_BUFFER_SIZE in at32xxx_wk_config.h //wk_dma_channel_config(DMA1_CHANNEL5,(uint32_t)&ADC1->odt,DMA1_CHANNEL5_MEMORY_BASE_ADDR,DMA1_CHANNEL5_BUFFER_SIZE); wk_dma_channel_config(DMA1_CHANNEL5,(uint32_t)&ADC1->odt,(uint32_t)adcx,6); dma_channel_enable(DMA1_CHANNEL5, TRUE); //init dma1 channel7 wk_dma1_channel7_init(); //config dma channel transfer parameter //user need to modify define values DMAx_CHANNELy_XXX_BASE_ADDR and DMAx_CHANNELy_BUFFER_SIZE in at32xxx_wk_config.h wk_dma_channel_config(DMA1_CHANNEL7,DMA1_CHANNEL7_PERIPHERAL_BASE_ADDR,DMA1_CHANNEL7_MEMORY_BASE_ADDR,DMA1_CHANNEL7_BUFFER_SIZE); dma_channel_enable(DMA1_CHANNEL7, TRUE); //init wk_xmc_gpio function. wk_xmc_gpio_init(); wk_xmc_bank1_nor_sram1_init(); wk_usart1_init(); wk_spi2_init(); wk_i2c1_init(); wk_adc1_init(); wk_rtc_init(); wk_exint_config(); wk_tmr1_init(); wk_tmr2_init(); wk_tmr3_init(); wk_tmr4_init(); wk_acc_init(); wk_usbfs_init(); wk_dac_init(); wk_gpio_config(); printf("Test AT32F407VGT7 programes ...\n\r"); [b][i]adc_enable(ADC1,TRUE);[/i][/b] [b][i] adc_calibration_start(ADC1);[/i][/b] while(1){ printf("ADC1:4%d ADC2=%d ADC3=%d ADC4=%d ADC5=%d \r\n",adcx[0],adcx[1],adcx[2],adcx[3],adcx[4]); } } 上边两行加粗的如果没有,测出来所有的数值均为40?不知道为何。有了就正常监测到了,尽管数值有相当大的误差,但已经有了。但也是系统数值,不同的是后几位的变化。下图是串口截取的数据: [img]https://bbs.21ic.com/data/attachment/album/202504/20/154112dss2pnnxpaaipgzv.jpg.thumb.jpg[/img] 从数据上看ADC1-3大概其是数据,ADC4-5为0。 没有重新改工程为只有ADC1-3进行测试。 以上是参考了老师:[color=rgb(102, 102, 102)][backcolor=rgb(242, 242, 242)][font=Tahoma, "][size=12px]ArterySW[/size][/font][/backcolor][/color]的几篇文章进行的设置。在设置过程中有些地方做过更改,最后最好的结果就是以上几张图片。 不清楚是哪里有问题?还是Work_BenchMark只能设置3个ADC————因为参考文章最多也只有3路ADC。 百忙之中不吝赐教万分感谢。 需要分或什么的尽管说,圣人敛财取之有道,我学您教受之无愧![attach]2396120[/attach][attach]2396122[/attach] [attach]2396124[/attach][attach]2396126[/attach]

    or Benchmark 遇到 AD AN dc

    608浏览量 4回复量 关注量
  • 如何确认AT_Work_BenchMark的版本 sos

    问题如题。在打开早先的一个BS工程:AT32F407VGT7_WorkBench.ATWP,用记事本打开可以查看,想XML写的注释脚本,但找不到使用那个版本的BS创建的工程,因为这个工程打开时可以运行的,只是需要重新编辑各个模块,用最新的和前一个本版重新编辑就不能运行了。 我的问题怎么才能找到这个工程的BS版本号?下边是这个文件的头几行: AT32F407 AT32F407VGT7 LQFP100 1.0 不是BS的版本号,无论打开那个版本的此文件头都一样。 先谢谢了

    or Benchmark AT32 AT32F AT32F4 T3

    586浏览量 0回复量 关注量
  • AT32F407VGT7采用BenchMark工程问题之一 SysTick

    老师们:您们好! 最近想系统的用一下BenchMark(简写BS),当然是最新版的。支持国产软件,不吐槽,只是希望我的问题可以解决,先谢谢。按照设计用BS创建完工程后,先是SysClock不震荡,多番折腾现在可以了。并且所有预设的GPIO都可以“工作”了——不报错。 首先遇到的是BS生成的工程中遍历time、CRM、和认为有可能出现SysTick相关的程序查找仅仅找到一处描述SysTick的地方,但没有提供可用函数。 如何使用系统SysTick就是首先遇到的问题。仿STM32编了半天代码最后头都大了,牵涉的太多AT没有相应的函数块。无奈提出来希望得到解决。 如何得到SysTick中断函数?解决计时问题和延时函数问题。

    AT systick Benchmark AT32F407VGT7 采用

    422浏览量 1回复量 关注量