问答

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

cr315

TA的家园币:9187  

  • 关闭Capsense中断有没有要求

    由于产品功能要求,需要执行某个任务时关闭一下Capsene中断,我这边直接调用了Capsense_ISR_Disable()函数,是否需要判断按键扫描完成才能调用该函数,如果直接调用Capsense_ISR_Disable()函数,是否合规或者有什么风险;请给个合理的操作,谢谢。

    CapSense

    2024-02-29 8
  • 4014触摸芯片EZI2C从机拉低主控SCL不释放

    主控芯片采用GPIO去模拟I2C主机,4014采用EZI2C硬件从机;主控每隔20ms去读一次从机数据,运行过程中会出现SCL被拉低不释放的问题,通过测量发现是4014拉低了SCL;请问什么情况下4014EZI2C从机会拉低SCL不释放?

    EZI2C

    2024-02-23 7
  • HC32L130 GCC编译的hex文件下载无反应

    由于版权问题,不能用keil。官方的例程中没有GCC的启动文件和ld文件,从论坛中下载了一份。成功生成hex文件并下载成功,但没反应。不晓得是不是生成hex文件的问题。附上cmakeset(CMAKE_SYSTEM_NAMEGeneric)cmake_minimum_required(VERSION3.21)project(HC32L130CASM)set(CMAKE_C_COMPILERarm-none-eabi-gcc)set(CMAKE_CXX_COMPILERarm-none-eabi-g++)set(CMAKE_ASM_COMPILERarm-none-eabi-gcc)set(CMAKE_C_FLAGS_DEBUG"-O0-g2-ggdb")set(CMAKE_C_FLAGS_RELEASE"-O0")set(CMAKE_CXX_STANDARD17)set(CMAKE_C_STANDARD99)include_directories(CMSIS/IncComponents/BSP/IncDriver/Inc${CMAKE_CURRENT_BINARY_DIR})file(GLOB_RECURSEhc32l130libCONFIGURE_DEPENDSCMSIS/Src/*.cDriver/Src/*.c)file(GLOB_RECURSEbspCONFIGURE_DEPENDSComponents/BSP/Src)aux_source_directory(${CMAKE_SOURCE_DIR}/mainmain)set(startup${CMAKE_SOURCE_DIR}/startup_hc32L13x.S)set(LINKER_SCRIPT${CMAKE_SOURCE_DIR}/HC32L130.ld)set(MAP_FILE${PROJECT_NAME}.map)set(CMAKE_C_FLAGS"-mlong-calls-fno-common-mcpu=cortex-m0plus-mthumb-ffunction-sections-fdata-sections")set(CMAKE_EXE_LINKER_FLAGS"-mcpu=cortex-m0plus-mthumb-ffunction-sections-T${LINKER_SCRIPT}-Xlinker--gc-sections-Wl,-Map,${MAP_FILE}--specs=nano.specs--specs=nosys.specs")set(CMAKE_EXE_LINKER_FLAGS_INIT"-mcpu=cortex-m0plus-mthumb-nostartfiles-ffunction-sections-Xlinker--gc-sections--specs=nano.specs--specs=nosys.specs--print-memory-usage")set(HEX_FILE${PROJECT_BINARY_DIR}/${PROJECT_NAME}.hex)add_executable(${PROJECT_NAME}.elf${main}${hc32l130lib}${bsp}${startup}${LINKER_SCRIPT})add_custom_command(TARGET${PROJECT_NAME}.elfPOST_BUILDCOMMAND${CMAKE_OBJCOPY}-Oihex$${HEX_FILE}COMMENT"Building${HEX_FILE}")

  • 关于GD32定时器0通道3触发adc问题

    本帖最后由快乐古月于2024-2-409:45编辑再库文件里面是是控制CTL1寄存器的12-14位,但是在手册里面这几位是保留的,还有就是配置了之后,触发方式是什么,是上溢还是下溢。[code]#defineCTL1_ETSIC(regval)(BITS(12,14)&((uint32_t)(regval)

    GD32 ADC触发

    2024-02-02 1
  • 新唐MS51系列 看门狗喂狗不成功

    配置:看门狗时钟WDT使能,在空闲和掉电模式下不工作。程序看门狗初始化BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;WDCON|=0x07;//设备WDT分频,溢出时间1.6STA=0xAA;TA=0x55;WDCON|=SET_BIT6;//清除计数器while((WDCON|~SET_BIT6)==0xFF);//确认清除计数器完成TA=0xAA;TA=0x55;WDCON|=0x80;//看门狗运行EA=BIT_TMP;间隔100ms喂狗,喂狗函数BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;WDCON|=SET_BIT6;EA=BIT_TMP;程序运行后,一直复位,喂狗不起作用

    新唐 MUC 看门狗

    2024-01-29 22
  • GD32F303 使用KEIL仿真,JLINK连不上什么原因?

    GD32F303使用KEIL仿真,JLINK连不上什么原因?需要怎么设置?

    2024-01-24 60
  • MM32G0001 PA0引脚复用USART1_RX失灵,各位有没有遇到过

    如题

    MM32 MM32G0001 USART PA0

    2024-01-13 11
  • 使用GD32E230X8通过IAR仿真出现outside FLASH问题

    使用GD32E230X8通过IAR烧录仿真时出现WritingoutsideFLASHmemoryataddress0x8004000的错误提示,通过查阅资料发现该芯片flash地址是0x8000000~0x800ffff,大小为64k,IAR上的icf文件设置地址也是正确,map文件中程序写到地址0x800'449c,剩余0xbb64

    2024-01-08 6
  • 有没有用过TLE5012B的大佬 想请教下角速度的计算方法

    能够从寄存器中读取到数据默认值应该是0的正转增大翻转由7FFF开始减小但是就算把寄存器值为1时带入手册的公式算出来也是128°/s,我觉得这个值应该不是正确的想请教一下这方面的计算方法

  • GD32H7什么时候能开卖?

    GD32H7什么时候能开卖?

    2024-01-05 12
  • HC32L110 采集ADC有可能一直没有值吗

    先说现象:1.试产了1000个大约有20个,ADC采样一直通不过。复位以后程序又正常工作,采样正常。2.对不能正常工作的产品测量对应引脚:(1)引脚上模拟信号量在变化,0~3V。(2)ADC连续转换中断有产生,因为我的程序在转换完成中断会关闭ADC使能,把检测口关闭。还把光敏电阻的电源关闭。通过测量光敏电阻电源,和引脚上的变化。确定ADC程序在运行,正常结束。程序结构:1.上电后初始化ADC功能。关闭ADC。因为是低功耗项目,所以不用的时候都关闭了外设。2.在需要的时候,开启转换。转换完成中断后,把ADC值保存在数组中,关闭ADC。3.程序任务判断ADC的值,做出对应动作。出错在这里,外部模拟量变化,这里没有反应。我怀疑是我的ADC设置不对,但是又没有找到哪不对。其中,我实际使用中因为不停的开关BGR,发现BGR的使能时间对结果影响非常大。我实际测试当BGR使能时间大于1ms,结果比较稳定。我程序中是使能了1.5ms才开启的转换。实际电路中因为输入阻抗大,所以程序开启了电压跟随器功能。看具体的操作:需要转换时:开启光敏电源使能对应扫描通道使能ADC时钟使能ADC使能BGR延时1.5ms清除ADC连续转换完成中断标志中断使能复位ADC连续转换状态启动ADC转换ADC中断程序:清除连续转换完成中断获取对应通道ADC值保存在数组中。禁止BGR禁止ADC禁止ADC时钟禁止ADC中断关闭光敏电源使用时:取ADC数据赋给局部变量局部变量参与运算,判断数据在哪个区间段根据区间段做出对应动作。最后,希望有大佬能提供思路。我在考虑是不是要周期性重新初始化ADC,但是这个是治标不治本的办法,我没有找到为什么会出现这个。

    单片机 技术交流

    2023-12-20 8
  • MM32F103定时器PWM输入捕获失败

    配置代码如下,有个PWM信号需要输入捕获计算频率,经查询数据手册PB11可以复用为TIM2_CH4,但怎么配置都不能正常进捕获中断,IC和PWM方式都试了不行,想问各位大佬该配置有啥问题,有没有什么解决办法/*功能名称IM4_PWMINPUT_INIT(u16arr,u16psc)描述PWM输入初始化*/voidTIM2_PWMINPUT_INIT(u16arr,u16psc){TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;NVIC_InitTypeDefNVIC_InitStructure;TIM_ICInitTypeDefTIM2_ICInitStructure;GPIO_InitTypeDefGPIO_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//OpenTIM4clockRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//opengpioBclockGPIO_PinRemapConfig(GPIO_PartialRemap2_TIM2,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);/*配置中断优先级*/NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);TIM_TimeBaseStructure.TIM_Period=arr;//设置在下一个更新事件装入活动的自动重装载寄存器周期的值TIM_TimeBaseStructure.TIM_Prescaler=psc;//设置用来作为TIMx时钟频率除数的预分频值TIM_TimeBaseStructure.TIM_ClockDivision=0;//设置时钟分割:TDTS=Tck_timTIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//TIM向上计数模式TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);//根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位TIM2_ICInitStructure.TIM_Channel=TIM_Channel_4;TIM2_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Rising;TIM2_ICInitStructure.TIM_IC

  • GD32E507V-START USART0 收到数据是乱码

    1购买的GD32E507V-START开办版2使用提供demo程序GD32E50x_Demo_Suites_V1.3.1\GD32E507V_START_Demo_Suites\Projects\04_USART_HyperTerminal_InterruptUSART0的配置:staticvoidusart_config(void){/*enableGPIOclock*/rcu_periph_clock_enable(RCU_GPIOB);/*enableUSARTclock*/rcu_periph_clock_enable(RCU_USART0);/*enableAFclock*/rcu_periph_clock_enable(RCU_AF);/*remapUSART0_TXtoPB6,USART0_RXtoPB7*/gpio_pin_remap_config(GPIO_USART0_REMAP,ENABLE);/*connectporttoUSARTx_Tx*/gpio_init(GPIOB,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_6);/*connectporttoUSARTx_Rx*/gpio_init(GPIOB,GPIO_MODE_IN_FLOATING,GPIO_OSPEED_50MHZ,GPIO_PIN_7);/*USARTconfigure*/usart_deinit(USART0);usart_word_length_set(USART0,USART_WL_8BIT);usart_stop_bit_set(USART0,USART_STB_1BIT);usart_parity_config(USART0,USART_PM_NONE);usart_baudrate_set(USART0,115200U);usart_receive_config(USART0,USART_RECEIVE_ENABLE);usart_transmit_config(USART0,USART_TRANSMIT_ENABLE);usart_enable(USART0);}3把demo中USART0:PB_06接到9针串口线的2脚PB_07接到9针串口线的3脚9针串口线的5脚接到开发板的GND4串口调试助手:收到数据是乱码串口调试助手设置:1152008位数据位1位停止位无校验位无流控请教下各位大佬,为啥是乱码?发送数据是:0x00,......,0xFF;收到数据是:00FDFBF9F7F5F1,......0180

  • GD32E507V开发板 USART0收到数据是乱码

    1使用源码:GD32E50x_Demo_Suites_V1.3.1\GD32E507V_START_Demo_Suites\Projects\04_USART_HyperTerminal_Interrupt\MDK-ARM\GD32E507V_START\程序没有做任何修改;2根据main函数中定义:usart_config();/*enableGPIOclock*/rcu_periph_clock_enable(RCU_GPIOB);/*enableUSARTclock*/rcu_periph_clock_enable(RCU_USART0);/*enableAFclock*/rcu_periph_clock_enable(RCU_AF);/*remapUSART0_TXtoPB6,USART0_RXtoPB7*/gpio_pin_remap_config(GPIO_USART0_REMAP,ENABLE);/*connectporttoUSARTx_Tx*/gpio_init(GPIOB,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_6);/*connectporttoUSARTx_Rx*/gpio_init(GPIOB,GPIO_MODE_IN_FLOATING,GPIO_OSPEED_50MHZ,GPIO_PIN_7);/*USARTconfigure*/usart_deinit(USART0);usart_word_length_set(USART0,USART_WL_8BIT);usart_stop_bit_set(USART0,USART_STB_1BIT);usart_parity_config(USART0,USART_PM_NONE);usart_baudrate_set(USART0,115200U);usart_receive_config(USART0,USART_RECEIVE_ENABLE);usart_transmit_config(USART0,USART_TRANSMIT_ENABLE);usart_enable(USART0);3:外接USB-RS232的9针串口线。PB_6接到9针串口线的2脚PB_7接到9针串口线的3脚9针串口线的5脚连到开发板的GND4打开串口调试工具,接收到数据是乱码;5源程序中的Tx的发送数据是:uint8_ttx_buffer[]={0x00,。。。。,0xFF}问下,是什么原因造成demo收到数据是乱码?

    2023-12-13 14
  • GD32F303问题

    问题背景是这样的:配置了一个20Khz的定时器溢出中断,System_cnt_add()函数是对一个变量++,就是创建了一个时间基准。然后在Task_time_slice_function()函数里面实现了一个led每0.5s翻转的任务。于是遇到了这样一个问题:当我把这个Task_time_slice_function()函数放在中断的时候,led能够正常实现每0.5s翻转的操作,也就是输出一个1Hz的方波。但是当我把Task_time_slice_function()函数放在main函数的while循环里面时,功能就失效了,变成输出32Hz的方波。有没有人知道怎么回事,希望能指点一下,谢谢!这是用到的几个函数intmain(void){Systemclock_config();nvic_config();gpio_config();spi2_config();timer_config();System_cnt_init();while(1){Task_time_slice_function();}}/*time020kHz*/voidTIMER0_UP_IRQHandler(void){if(SET==timer_interrupt_flag_get(TIMER0,TIMER_INT_UP)){timer_interrupt_flag_clear(TIMER0,TIMER_INT_FLAG_UP);System_cnt_add();}}voidTask_time_slice_function(void){/*1ms*/if(_abs(systemclock_data.systemclock_cnt-systemclock_data.systemclock_lastcnt_1ms)>=systemclock_data.systemclock_cnt_1ms){systemclock_data.systemclock_lastcnt_1ms=systemclock_data.systemclock_cnt;led_main();}/*10ms*/if(_abs(systemclock_data.systemclock_cnt-systemclock_data.systemclock_lastcnt_10ms)>=systemclock_data.systemclock_cnt_10ms){systemclock_data.systemclock_lastcnt_10ms=systemclock_data.systemclock_cnt;}/*100ms*/if(_abs(systemclock_data.systemclock_cnt-systemclock_data.systemclock_lastcnt_100ms)>=systemclock_data.systemclock_cnt_100ms){systemclock_data.systemclock_lastcnt_100ms=systemclock_data.systemclock_cnt;}/*1000ms*/if(_abs(systemclock_data.systemclock_cnt-systemclock_data.systemclock_lastcnt_1000ms)>=systemclock_data.systemclo

    TE GD32F303 ST sy System syste

    2023-12-02 3
123下一页