问答

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

肥肠虾头商迪

TA的家园币:20  

  • 求助 HC32L136K8TK ADC 引脚,采集不到电压,无变化

    本帖最后由doghead于2025-2-1111:30编辑/*******************************************************************************Copyright(C)2017,XiaohuaSemiconductorCo.,LtdAllrightsreserved.**此软件为小华半导体股份有限公司所有并发布。*/#include"adc.h"//ADC相关头文件#include"gpio.h"//GPIO相关头文件#include"bgr.h"//BGR(带隙基准)相关头文件#include"stdio.h"//标准输入输出(printf)#include"uart.h"//UART(串口)相关头文件#include"sysctrl.h"//系统控制相关头文件(时钟等)#defineVCC3.3f//供电电压//全局变量,用于存储ADC转换结果(声明为volatile,防止优化)volatileuint32_tu32AdcRestult0;//PC00volatileuint32_tu32AdcRestult1;//PC01//函数声明voidApp_AdcPortInit(void);//初始化ADC端口(GPIO)voidApp_AdcInit(void);//初始化ADC模块voidApp_AdcJqrCfg(void);//配置ADC队列扫描模式(JQR)voidApp_PortInit(void);//初始化UART端口(GPIO)voidApp_UartCfg(void);//配置UART模块floatConvertToVoltage(uint32_tsensorValue);//将ADC值转换为电压voiddelay_ms(uint32_tms);//简单的毫秒延时函数//主函数intmain(void){App_AdcPortInit();//初始化ADC端口App_AdcInit();//初始化ADC模块App_AdcJqrCfg();//配置ADC队列扫描App_PortInit();//初始化UART端口App_UartCfg();//配置UART模块__enable_irq();//使能全局中断while(1){Adc_JQR_Start();//启动ADC队列扫描转换delay_ms(500);//延时500毫秒floatvoltage0=ConvertToVoltage(u32AdcRestult0);//转换通道0电压(PC00)floatvoltage1=ConvertToVoltage(u32AdcRestult1);//转换通道1电压(PC01)//打印ADC值和对应的电压值printf("ADCChannel0(PC00):%lu->Voltage:%.3fV\n",u32AdcRestult0,voltage0);printf("ADCChannel1(PC01):%lu->Voltage:%.3fV\n",u32AdcRestult1,voltage1);}}//ADC中断处理函数voidAdc_IRQHandler(void){if(TRUE==Adc_GetIrqStatus(AdcMskI

  • 使用三个定时器输出PWM卡死

    请教各位大牛一个问题,卡住我几天了。我使用如下定时器配置PWM,如下示:PA6->PWM0tim1_cha(4)PA7->PWM1tim2_cha(5)PB0->PWM2tim3_ch1b(2)在应行如下初始化代码后,直接卡死了,请问是什么原因呢voidpwm_init(){Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE);//端口外设时钟使能TimerPortCfg(PWM0);TimerPortCfg(PWM1);TimerPortCfg(PWM2);Timer1Cfg(100,PWM_DUTY);Bt_M23_EnPWM_Output(TIM1,TRUE,FALSE);//端口输出使能Timer2Cfg(100,PWM_DUTY);Bt_M23_EnPWM_Output(TIM2,TRUE,FALSE);//端口输出使能Timer3Cfg(100,PWM_DUTY);Tim3_M23_EnPWM_Output(TRUE,FALSE);//端口输出使能Bt_M23_Run(TIM2);//运行。Bt_M23_Run(TIM1);//运行。Tim3_M23_Run();//运行。}完整模块代码发下:#include"pwm.h"#include"timer3.h"#include"bt.h"#include"gpio.h"#include"motor.h"volatilecharpwm_duty=95;//PA6->PWM0tim1_cha(4)//PA7->PWM1tim2_cha(5)或tim3_ch0b(4)//PB0->PWM2tim3_ch1b(2)typedefenum{PWM0=0u,PWM1,PWM2,}pwm_index_t;/********************************************************************************中断服务函数******************************************************************************/voidTim1_IRQHandler(void){//Timer1模式23更新中断if(TRUE==Bt_GetIntFlag(TIM1,BtUevIrq)){Bt_M23_CCR_Set(TIM1,BtCCR0A,100-pwm_duty);//设置通道A比较值Bt_ClearIntFlag(TIM1,BtUevIrq);//清中断标志}}voidTim2_IRQHandler(void){//Timer2模式23更新中断if(TRUE==Bt_GetIntFlag(TIM2,BtUevIrq)){Bt_M23_CCR_Set(TIM2,BtCCR0A,100-pwm_duty);//设置通道A比较值Bt_ClearIntFlag(TIM2,BtUevIrq);//清中断标志}}voidTim3_IRQHandler(void){//Timer3模式23更新中断if(TRUE==Tim3_GetIntFlag(Tim3UevIrq)){Tim3_M23_CCR_Set(Tim3CCR1B,100-pwm_duty);//设置CH1通道B比较值Tim3_ClearIntFlag(Tim3UevIrq);/