问答

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

zhjb1

TA的家园币:1538  

  • 利用TMR2进行外部采样计数器

    首先想亚特利BBS表示深切的歉意,由于粗心大意将WorkBench,写成BenchMark|让有人删了两次帖子,错了认罚,再次致歉!目前ADC算是半个正常:首先老老实实从仅仅开通4线LCD,ADC1-3,USART1,RTC开始,其他照旧。结果3路ACD出来了,只是数据不对,但可以随电位器而变化,并且两块板子都正常打印和显示。第二步将ADC增加到ADC1-4(ADC,2,3,6,Temperature-16),结果两块板子一款【A】4路正常,一款板子【B】3路正常,结果如下:两款板子的ADC1从463->44067,超出了12位ADC4095的范围(VREF+通过RC滤波直接接在VCC上,VREF-接GND);内部温度时A板子可以随着加热芯片变化,B板子***是3998,偶尔各位跳一下,估计芯片有问题,此问题可以忽略,无碍大局。ADC基本正常后,直接将设想的模块在WorkBench中都加上了,具体详情以前有帖子已经说明,此不啰嗦了。接着是EXINT,浏览EXINT的模块函数,很快5路外部中断响应设置完成,并且测试显示正常(E2-4,E6,C5分别用aj=52,53,54,56,35表示)。这个操作是在at32f403a_407_int.c中的EXINT[2,3,4,9_5]_IRQHandler(void)中设置中断响应即可。第三步估计比艰难,所以将STM32F401RCT6工程也打开,对比编程,发现两者差别比较大,先将我的WB的设置贴图如下:这是参考STM的CubeMX的设置:TMR通道1直接输入,通道2间接输入(不占用GPIO),时钟设置为0.1秒[10HZ],TMR2是用来外部计频了。在KEIL中,STM需要在MAIN中设置如下启动函数://TIM2ExtPlusTestHAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1);HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_2);__HAL_TIM_ENABLE_IT(&htim2,TIM_IT_UPDATE);__HAL_TIM_CLEAR_FLAG(&htim2,TIM_FLAG_TRIGGER);在stm32f4xx_it.c中的TMR中断向量中设置if(__HAL_TIM_GET_FLAG(&htim2,TIM_FLAG_UPDATE)!=RESET){if(t2Cnt>7){t2Cnt=0;kk=ttc-8;ttc=0;}elset2Cnt++;__HAL_TIM_CLEAR_IT(&htim2,TIM_IT_UPDATE);}//}ttc++;其中ttc是在中断没有发生累加计频,

  • Work_BenchMark创建工程遇到的问题

    采用Work_BenchMark1.1.0.8————最新版遇到的问题仅仅以ADC为例,本工程需要4路ADC加上测温一共5路,简化操作仅用ADC1.也从工程SysClock开始:采用外部晶振8MHz,sysClock=240MHz见图。ADC的设置见下图:设置了6个,实际只用5个,因为想用DAC1,2,所以ADC4实际指向IN6:IN1,IN2,IN3,IN6,这4个GPIO口作为ADC的4路输入。DMA设置如下图:为了防止出错,本设置除了XMC之外仅仅设置了ADC1的DMA,默认为DMA1_CHANNEL5通道。主要代码如下(为了省事与ADC无关的都顺序集中到一行)://mainfunction.intmain(void){//systemclockconfig.wk_system_clock_config();wk_periph_clock_config();wk_debug_config();wk_nvic_config();wk_timebase_init();//initdma1channel5wk_dma1_channel5_init();//configdmachanneltransferparameter//userneedtomodifydefinevaluesDMAx_CHANNELy_XXX_BASE_ADDRandDMAx_CHANNELy_BUFFER_SIZEinat32xxx_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);//initdma1channel7wk_dma1_channel7_init();//configdmachanneltransferparameter//userneedtomodifydefinevaluesDMAx_CHANNELy_XXX_BASE_ADDRandDMAx_CHANNELy_BUFFER_SIZEinat32xxx_wk_config.hwk_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);//initwk_xmc_gpiofunction.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();

    or Benchmark 遇到 AD AN dc

    2025-04-20 4
  • 如何确认AT_Work_BenchMark的版本

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

    or Benchmark AT32 AT32F AT32F4 T3

    2025-04-19 0
  • AT32F407VGT7采用BenchMark工程问题之一 SysTick

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

  • 定义不连续的GPIO口为一个n位的并行口,直接传输n位数据

    问题如题:在MCU中,GPIO引脚提出不是系列连续,在设计PCB时较为麻烦,当然不需使用注入SFMC类的AF控制时必须满足芯片定义,如果仅仅当一个n位并行口使用,如何将连续的GPIO定义成一个n位的并口?希望有定义代码?已知的方式有:采用结构体定义。先谢谢了

  • VL53L0X的I2C代码

    在找到的可以正确操作VL53L0X微激光测距传感器的代码中,想用在103CBT6的芯片上,但对有个I2C的地址不明。本案例采用的是PA_2,PA_3的I2C端口,针对I2C的方向他的代码是:#defineVL_SDA_IN(){GPIOA->CRL&=0XFFFFF0FF;GPIOA->CRL|=8CRL|=3

    ST I2c C代码 vl53l0x GPIO

    2024-11-27 0
  • NXP LPC824芯片宕了

    问题如题默认824的I/O主函数中只有IO口反转一行代码,大约位300KHz。想测试NXPLPC824芯片I/O的最大速度,尝试更改system_LPC8xx.c文档中设置速度的项以提高IO的翻转速度,项如下:#defineSYSPLLCTRL_Val0x00000024//Reset:0x000看组合名称应该是控制PLL的值,尝试将0x00000024-->0x00000012改了一半,下载运行后,芯片不再被识别也无法恢复了,用SEGGER打开也无法识别,强行清除FLASH无效。请问应该如何解决,谢谢改变以下项:defineSYSAHBCLKDIV_Val0x000000020x00000002-->0x00000001后AHB的Clock少了一倍,IO口的翻转速度是提高了达到600KHz。没有问题

    NXP lpc824 IO速度 芯片

    2024-11-17 12
  • DAC问题

    用Work_Bench创建了一个AT的工程,在做实验时能遇到一些问题,以后慢慢提问并解决。如果解决了,会将代码放上一起学习。四、DAC问题,初始化代码没有问题,初始化代码如下:voidwk_dac_init(void){/*addusercodebegindac_init0*//*addusercodeenddac_init0*/gpio_init_typegpio_init_struct;gpio_default_para_init(&gpio_init_struct);/*addusercodebegindac_init1*//*addusercodeenddac_init1*//*gpio------------------------------------------------------------------------------*//*configuretheOUT1pin*/gpio_init_struct.gpio_pins=DAC1_PIN;gpio_init_struct.gpio_mode=GPIO_MODE_ANALOG;gpio_init_struct.gpio_pull=GPIO_PULL_NONE;gpio_init(DAC1_GPIO_PORT,&gpio_init_struct);/*configuretheOUT2pin*/gpio_init_struct.gpio_pins=DAC2_PIN;gpio_init_struct.gpio_mode=GPIO_MODE_ANALOG;gpio_init_struct.gpio_pull=GPIO_PULL_NONE;gpio_init(DAC2_GPIO_PORT,&gpio_init_struct);/*dacOUT1init--------------------------------------------------------------------*/dac_trigger_enable(DAC1_SELECT,TRUE);dac_trigger_select(DAC1_SELECT,DAC_SOFTWARE_TRIGGER);dac_wave_generate(DAC1_SELECT,DAC_WAVE_GENERATE_TRIANGLE);/*Triangularamplitudeselect------------------------------------------------------*/dac_mask_amplitude_select(DAC1_SELECT,DAC_LSFR_BITB0_AMPLITUDE_4095);//DAC_LSFR_BIT10_AMPLITUDE_3);//dac_output_buffer_enable(DAC1_SELECT,TRUE);dac_dma_enable(DAC1_SELECT,TRUE);dac_enable(DAC1_SELECT,TRUE);/*dacOUT2init--------------------------------------------------------------------*/dac_trigger_enable(DAC2_SELECT,TRUE);dac_trigger_select(DAC2_SELECT,DAC_SOFTWARE_TRIGGER);dac_wave_generate(DAC2_SELECT,DAC_WAVE_GENERATE_TRIANGLE);/*Triangularampli

    AT32F407 dac输出 DAC pi gp GPIO

    2024-11-13 0
  • AT32F407多路ADC问题

    用Work_Bench创建了一个AT的工程,在做实验室能遇到一些问题,以后慢慢提问并解决。如果解决了,会将代码放上一起学习。二、多路ADC采样在AT_WORK_BENCH中设置了ADC1的IN1,IN2,IN3,IN6,IN7,其中IN7连接内部温度传感器。AWB生成的代码看着挺好也非常漂亮,初始化代码如下:/***@briefinitadc1function.*@paramnone*@retvalnone*/voidwk_adc1_init(void){/*addusercodebeginadc1_init0*//*addusercodeendadc1_init0*/gpio_init_typegpio_init_struct;adc_base_config_typeadc_base_struct;gpio_default_para_init(&gpio_init_struct);/*addusercodebeginadc1_init1*//*addusercodeendadc1_init1*//*gpio--------------------------------------------------------------------*//*configuretheIN1pin*/gpio_init_struct.gpio_mode=GPIO_MODE_ANALOG;gpio_init_struct.gpio_pins=ADC0_PIN;gpio_init(ADC0_GPIO_PORT,&gpio_init_struct);/*configuretheIN2pin*/gpio_init_struct.gpio_mode=GPIO_MODE_ANALOG;gpio_init_struct.gpio_pins=ADC1_PIN;gpio_init(ADC1_GPIO_PORT,&gpio_init_struct);/*configuretheIN3pin*/gpio_init_struct.gpio_mode=GPIO_MODE_ANALOG;gpio_init_struct.gpio_pins=ADC2_PIN;gpio_init(ADC2_GPIO_PORT,&gpio_init_struct);/*configuretheIN6pin*/gpio_init_struct.gpio_mode=GPIO_MODE_ANALOG;gpio_init_struct.gpio_pins=ADC3_PIN;gpio_init(ADC3_GPIO_PORT,&gpio_init_struct);/*configuretheIN7pin*/gpio_init_struct.gpio_mode=GPIO_MODE_ANALOG;gpio_init_struct.gpio_pins=ADC4_PIN;gpio_init(ADC4_GPIO_PORT,&gpio_init_struct);crm_adc_clock_div_set(CRM_ADC_DIV_6);adc_tempersensor_vintrv_enable(TRUE);/*adc_common_settings-------------------------------------------------------------*/adc_combine_mode_select(ADC_INDEPENDENT_MOD

    f407 多路ADC AT32F407 pi IO

    2024-11-13 0
  • @

    用Work_Bench创建了一个AT的工程,在左实验室能遇到一些问题,以后慢慢提问并解决。如果解决了,会将代码放上一起学习。二、多路ADC采样

    AD or 遇到 实验 提问 学习

    2024-11-13 0
  • 在main中调PWM脉宽

    用Work_Bench创建了一个AT的工程,在左实验室能遇到一些问题,以后慢慢提问并解决。如果解决了,会将代码放上一起学习。一、PWM脉宽main中调整调整的问题按照ATWB创建新工程,其中设置了5路ADC最后一路为测试内部温度,4路分别由TIM1、TIM3、TIM4、TIM8都为PWM_A模式,USART1,I2C1,EXTINTIO、InputIO、XMC、一些OutputIO。先测试PWM,金额本上与工程常见的PWM频率相同,稍稍低一点,可以容忍的范围。在查看PWM--time初始化函数可以看到控制pwm脉宽的是下语句:tmr_channel_value_set(TMR1,TMR_SELECT_CHANNEL_1,30);30是脉宽,相当于周期的1/10,基本吻合。问题按照STM的方法,直接将这行语句放在主函数中,连续改变30,PWM脉宽不变,城市STM芯片的更改脉宽方式也无动于衷。问题是应该如何更改脉宽?总不能改革脉宽需要重新初始化一下TIM。谢谢

    国产芯片 PWM PLUS ma AI

    2024-11-13 3
  • printf命令报错采

    用AT32_Work_Bench创建工程项目,设置了usart1,在程序中printf命令编译通不过?是否还需要之间什么辅助命令或宏代码?谢谢

  • 如何读取TIMERx的计数值

    在STM32F系列芯片中测试GPIO输出速度还行轻松达到10MHz以上,我的问题是:如果用外部信号触发时钟time用内部系统时钟计数测试的数值在time里,如何读出?用CubeMX常见的工程,遍历与时钟相关的函数没有找到读取值得方法。知情者请告知,先谢谢了。

    RX 读取 寄存器 timer ST

    2024-06-19 0
  • AT32F407VGT7芯片能识别和下载,但复位无任何反应.

    大家好!就近做一些用国产代替STM同类芯片的测试,第一款就来个下马威,问题如下:1.用JLINK可以识别和连接芯片,测试速度也支持,但无法下程序,一写就报错自动断开.2.在keil中可以编译改过来的代码,可以用ST-LINK或JTAG识别,下载校验都正常,但无法运行-----按重启键无反应.是芯片的问题吗?但可以识别(用AT型号或STM对应型号都通过)?如果芯片没有问题,那么我的操作哪里有问题?开发平台:64位win7旗舰版,KEIL5.25工程是STM32移植过来的,将内容减到只剩配置GPIO和驱动两颗LCD闪烁都没有任何动静.强调一下,编译,下载,校验都正常!!!先谢谢了.