问答

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

21ic问答首页 - TAG - IO
  • 使用STC8HK6加入看门狗后长时间工作仍然有死机

    我在使用STC8HK6这颗芯片做电源管理,软开关按键接到IO口上,使用中发现加了看门狗后,长时间工作仍然有死机(无法关机)的问题,请问各位大神谁有相关的经验?

    IO 使用 看门狗 stc8h STC死机 国产芯片

    3532浏览量 9回复量 关注量
  • HC32L196KCTA

    HC32L196KCTA深度休眠模式,任意IO口都可以唤醒吗

    IO L19 HC 单片机

    2227浏览量 4回复量 关注量
  • HC32F003C4 芯片sdk 请问如何使用IO中断去模拟串口实现收发消息 sos

    目前无法实现在深度睡眠的情况下去使用串口传输信息

    芯片 模拟串口 串口实现 sdk IO HC32F003

    1039浏览量 0回复量 关注量
  • 引脚复用配置 sos

    在配置GPIO_InitStructure.GPIO_Alternate属性的时候,有时候会看到类似[font=Droid Sans Mono, monospace, monospace][color=#5d5d5f]GPIO_AF2_TIM3或GPIO_AF4_TIM3。请问这里的AFx的x应该如何选择?[/color][/font]

    IO gp pi GPIO 复用 引脚

    882浏览量 0回复量 关注量
  • apm32f003 iap在线升级 中断向量表 修改无效

    已定义 #define __VTOR_PRESENT 1U /*!VTOR = FMC_BASE | VECT_TAB_OFFSET; //此处修改了中断向量表偏移地址,但实际并未被修改 GPIO_Init(); TMR4Init(); //中断处理中对PB4进行翻转 while(1) { delay(500000); //GPIO_Toggle(GPIOB, GPIO_PIN_4); } return 0; }

    IO gp pi IAP在线升级 APM32F003 中断向量

    1128浏览量 3回复量 关注量
  • TIRTOS如何接入OV7670摄像头模块,RTOS上哪些io可以用作DCMI sos

    [i=s] 本帖最后由 tyw 于 2024-7-3 20:40 编辑 [/i] TIRTOS如何接入OV7670摄像头模块,RTOS上哪些io可以用作[color=#333333][font="][size=28px]DCMI[/size][/font][/color][color=#333333][font="][size=28px] [/size][/font][/color] [attach]2271188[/attach] [attach]2271190[/attach] [attach]2271192[/attach] [attach]2271194[/attach] [size=2][color=#ffffff][backcolor=purple] tyw 注 [/backcolor][/color][/size] [color=#333333][font="][size=28px] [/size][/font][/color] [color=#333333][font="][size=28px] [/size][/font][/color] [color=#333333][font="][size=28px] [/size][/font][/color]

    摄像头模块 TI RTOS OV7670 IO DCMI

    896浏览量 0回复量 关注量
  • ch32v307用HC-SR04 超声波测距和MQ2 烟雾浓度时会卡死,大家帮我看看代码

    [i=s] 本帖最后由 nmmdw 于 2024-7-4 12:58 编辑 [/i] s1.c文件//============================================================================ // HC-SR04 超声波测距模块============================================================== void ultrasonic_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init( GPIOA, &GPIO_InitStructure); GPIO_ResetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1); } u16 count = 0; void Input_Capture_Init( u16 arr, u16 psc ) { TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; NVIC_InitTypeDef NVIC_InitStructure; //使能IM2时钟 RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM2, ENABLE); ultrasonic_GPIO_Init(); TIM_DeInit(TIM2); //定时器周期,实际就是设定自动重载寄存器 ARR 的值, ARR 为要装载到实际自动重载寄存器(即影子寄存器) 的值, 可设置范围为 0 至 65535。 TIM_TimeBaseInitStructure.TIM_Period = arr; //定时器预分频器设置,时钟源经该预分频器才是定时器计数时钟CK_CNT,它设定 PSC 寄存器的值。 //计算公式为: 计数器时钟频率 (fCK_CNT) 等于fCK_PSC / (PSC[15:0] + 1),可实现 1 至 65536 分频。 TIM_TimeBaseInitStructure.TIM_Prescaler = psc; //时钟分频,设置定时器时钟 CK_INT 频率与死区发生器以及数字滤波器采样时钟频率分频比。可以选择 1、 2、 4 分频。 TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //设置计数模式,向上计数模式 //TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0x00; //设置重复计数器的值,0。重复计数器,只有 8 位,只存在于高级定时器。 TIM_TimeBaseInit( TIM2, &TIM_TimeBaseInitStructure); //初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; //TIM1捕获比较中断 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//设置抢占优先级 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //设置响应优先级 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能通道 NVIC_Init(&NVIC_InitStructure); TIM_ClearFlag(TIM2, TIM_FLAG_Update); TIM_ITConfig( TIM2, TIM_IT_Update, ENABLE ); //使能TIM2更新中断 TIM_Cmd( TIM2, DISABLE ); //定时器使能 } void ENABLE_TIM(void) { //while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==RESET) { TIM_SetCounter(TIM2,0); count = 0; TIM_Cmd(TIM2,ENABLE);//回响信号到来,开启定时器计数 } } void DISABLE_TIM(void) { //while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==SET) { TIM_Cmd(TIM2,DISABLE);//回响信号到来,开启定时器计数 } } u32 GetCount(void) { u32 t = 0; t = count*1000; t += TIM_GetCounter(TIM2); TIM_SetCounter(TIM2,0); Delay_Ms(10); return t; } //一次获取超声波测距数据 两次测距之间需要相隔一段时间,隔断回响信号 //为了消除余震的影响,取五次数据的平均值进行加权滤波。 float Ultrasoniclength(void ) { // MQ2_run(); // Delay_Ms(2000); u32 t = 0; int i = 0; float length = 0 , sum = 0; while(i!=5) { Trig_H; Delay_Us(20); Trig_L; while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==RESET); //此处一直等,等到为1,进行下一步 ENABLE_TIM();//回响信号到来,开启定时器计数 i++; while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==SET); //此处一直等,等到为0,进行下一步,这两段while之间的时间就是高电平时间,即发出到返回接收的时间 DISABLE_TIM();//回响信号到来,开启定时器计数 t = TIM_GetCounter(TIM2); length=(t+count*1000)/58.0;//通过回响信号计算距离 sum = length + sum ; TIM_SetCounter(TIM2,0); count = 0; Delay_Ms(100); } length = sum/5.0; return length; } void TIM2_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void TIM2_IRQHandler(void) { if(TIM_GetITStatus(TIM2,TIM_IT_Update)!=RESET) { TIM_ClearITPendingBit(TIM2,TIM_IT_Update);//清除中断标志 count++; } } //============================================================================= // MQ2 烟雾浓度模块============================================================ u8 times; void MQ2_Init() { GPIO_InitTypeDef GPIO_Initstructre; ADC_InitTypeDef ADC_InitStruct; RCC_APB2PeriphClockCmd(MQ2_RCC_GPIOx | MQ2_RCC_ADCx,ENABLE); //PA1 作为模拟通道输入引脚 GPIO_Initstructre.GPIO_Mode=GPIO_Mode_AIN;//模拟输入引脚 GPIO_Initstructre.GPIO_Pin=MQ2_GPIOx_Pinx; GPIO_Initstructre.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_Initstructre); GPIO_SetBits(MQ2_GPIOx,MQ2_GPIOx_Pinx); RCC_ADCCLKConfig(RCC_PCLK2_Div6);//设置ADC分频因子6 72M/6=12,ADC最大时间不能超过14M ADC_DeInit(MQ2_ADCx);//复位ADC1 ADC_InitStruct.ADC_ContinuousConvMode = DISABLE;//模数转换工作在单次转换模式 ADC_InitStruct.ADC_DataAlign=ADC_DataAlign_Right;//ADC数据右对齐 ADC_InitStruct.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//转换由软件而不是外部触发启动 ADC_InitStruct.ADC_Mode=ADC_Mode_Independent;//ADC工作模式:ADC1和ADC2工作在独立模式 ADC_InitStruct.ADC_NbrOfChannel = 1;//顺序进行规则转换的ADC通道的数目 ADC_InitStruct.ADC_ScanConvMode = DISABLE;//模数转换工作在单通道模式 ADC_Init(MQ2_ADCx,&ADC_InitStruct);//根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器 ADC_Cmd(MQ2_ADCx,ENABLE);//使能指定的ADC1 ADC_ResetCalibration(MQ2_ADCx);//使能复位校准 while(ADC_GetResetCalibrationStatus(MQ2_ADCx));//等待复位校准结束 ADC_StartCalibration(MQ2_ADCx);//开启AD校准 while(ADC_GetCalibrationStatus(MQ2_ADCx));//等待校准结束 ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能指定的ADC1的软件转换启动功能 } //获得ADC值 ch:通道值 0~3 u16 Get_Adc(u8 ch)//设置指定ADC的规则组通道,一个序列,采样时间 { ADC_RegularChannelConfig(MQ2_ADCx,ch,1,ADC_SampleTime_239Cycles5);//ADC1,ADC通道,采样时间为239.5周期 ADC_SoftwareStartConvCmd(MQ2_ADCx,ENABLE);//使能指定的ADC1的软件转换启动功能 while(!ADC_GetFlagStatus(MQ2_ADCx,ADC_FLAG_EOC));//等待转换结束 return ADC_GetConversionValue(MQ2_ADCx);//返回最近一次ADC1规则组的转换结果 } u16 Get_Adc_Average(u8 ch,u8 times) { u32 temp_val = 0; u8 t; for(t = 0;t < times;t++) { temp_val += Get_Adc(ch); Delay_Ms(5); } return temp_val / times; } float MQ2_Value;//adc值 float temp_one;//电压值 void MQ2_run() { MQ2_Value = Get_Adc_Average(ADC_Channel_1,10) * 100 / 4095;//模拟烟雾浓度的值 temp_one = (float) MQ2_Value / 4096*3.3; printf("烟雾浓度= %3.2f %,电压值=%3.2f\r\n",MQ2_Value,temp_one); Delay_Ms(1000); } //=========================================================================== s1.h文件====================================================================== #ifndef USER_S1_H_ #define USER_S1_H_ #include "ch32v30x_conf.h" // HC-SR04 超声波测距模块======================================================== #define Trig_H GPIO_SetBits(GPIOA,GPIO_Pin_0) #define Trig_L GPIO_ResetBits(GPIOA,GPIO_Pin_0) #define Echo_H GPIO_SetBits(GPIOA,GPIO_Pin_1) #define Echo_L GPIO_ResetBits(GPIOA,GPIO_Pin_1) void ultrasonic_GPIO_Init(void); void Start_Trig(void); void Input_Capture_Init( u16 arr, u16 psc ); void ENABLE_TIM(void); void DISABLE_TIM(void); u32 GetCount(void); float Ultrasoniclength(void); // MQ2 烟雾浓度模块============================================================= #define MQ2_GPIOx GPIOD //修改 A 时,GPIO 使能的 A 也要修改 #define MQ2_GPIOx_Pinx GPIO_Pin_3 //引脚 #define MQ2_RCC_GPIOx RCC_APB2Periph_GPIOD //GPIO 使能 #define MQ2_ADCx ADC1 //修改 1 时,ADC 使能的 1 也要修改 #define MQ2_RCC_ADCx RCC_APB2Periph_ADC1 //ADC 使能 void MQ2_Init(void); u16 Get_Adc(u8 ch); u16 Get_Adc_Average(u8 ch,u8 times); void MQ2_Check(void); void MQ2_run(void); #endif /* USER_S1_H_ */

    IO pi 红外模块 CH32V307 sr501 HC

    2376浏览量 2回复量 关注量
  • 沁恒ch32v307无法实现hc-sr04超声波测距,大家帮忙看看

    //超声波测距模块============================================================== //system.c u16 count = 0; void TIM2_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void ultrasonic_Init(u16 arr, u16 psc)//初始化 { //初始化结构体 GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; NVIC_InitTypeDef NVIC_InitStructure; //使能IM2时钟 RCC_APB1PeriphClockCmd(ultrasonic_RCC | RCC_APB1Periph_TIM2, ENABLE); //配置 GPIO_InitStructure.GPIO_Pin = ultrasonic_Pin; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(ultrasonic_GPIOx, &GPIO_InitStructure); GPIO_ResetBits(ultrasonic_GPIOx, ultrasonic_Pin); GPIO_InitStructure.GPIO_Pin = ultrasonic_Pin_t; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(ultrasonic_GPIOx, &GPIO_InitStructure); GPIO_ResetBits(ultrasonic_GPIOx, ultrasonic_Pin | ultrasonic_Pin_t); TIM_DeInit(TIM2); //定时器周期,实际就是设定自动重载寄存器 ARR 的值, ARR 为要装载到实际自动重载寄存器(即影子寄存器) 的值, 可设置范围为 0 至 65535。 TIM_TimeBaseInitStructure.TIM_Period = arr; //定时器预分频器设置,时钟源经该预分频器才是定时器计数时钟CK_CNT,它设定 PSC 寄存器的值。 //计算公式为: 计数器时钟频率 (fCK_CNT) 等于fCK_PSC / (PSC[15:0] + 1),可实现 1 至 65536 分频。 TIM_TimeBaseInitStructure.TIM_Prescaler = psc; //时钟分频,设置定时器时钟 CK_INT 频率与死区发生器以及数字滤波器采样时钟频率分频比。可以选择 1、 2、 4 分频。 TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //设置计数模式,向上计数模式 //TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0x00; //设置重复计数器的值,0。重复计数器,只有 8 位,只存在于高级定时器。 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure); //初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; //TIM1捕获比较中断 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//设置抢占优先级 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //设置响应优先级 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能通道 NVIC_Init(&NVIC_InitStructure); TIM_ClearFlag(TIM2, TIM_FLAG_Update); TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE ); //使能TIM2更新中断 TIM_Cmd(TIM2, DISABLE ); //定时器使能 } void ENABLE_TIM(void) { //while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==RESET) { TIM_SetCounter(TIM2,0); count = 0; TIM_Cmd(TIM2,ENABLE);//回响信号到来,开启定时器计数 } } void DISABLE_TIM(void) { //while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==SET) { TIM_Cmd(TIM2,DISABLE);//回响信号到来,开启定时器计数 } } u32 GetCount(void) { u32 t = 0; t = count*1000; t += TIM_GetCounter(TIM2); TIM_SetCounter(TIM2,0); Delay_Ms(10); return t; } //一次获取超声波测距数据 两次测距之间需要相隔一段时间,隔断回响信号 //为了消除余震的影响,取五次数据的平均值进行加权滤波。 float Ultrasonic_length(void ) { u32 t = 0; int i = 0; float length = 0 ,sum = 0; while(i!=5) { Trig_H; Delay_Us(20); Trig_L; while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==RESET); //此处一直等,等到为1,进行下一步 ENABLE_TIM();//回响信号到来,开启定时器计数 i = i + 1; while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==SET); //此处一直等,等到为0,进行下一步,这两段while之间的时间就是高电平时间,即发出到返回接收的时间 DISABLE_TIM();//回响信号到来,开启定时器计数 t = TIM_GetCounter(TIM2); length=(t+count*1000)/58.0;//通过回响信号计算距离 sum = length + sum; TIM_SetCounter(TIM2,0); count = 0; Delay_Ms(100); } length = sum/5.0; return length; } void TIM2_IRQHandler(void) { if(TIM_GetITStatus(TIM2,TIM_IT_Update)!=RESET) { TIM_ClearITPendingBit(TIM2,TIM_IT_Update);//清除中断标志 count++; } } //===================================================================== //system.h #ifndef __SYSTEM_H #define __SYSTEM_H #include "ch32v30x_conf.h" //超声波测距模块============================================================ #define ultrasonic_GPIOx GPIOA //修改 A 时,使能的 A 也要修改 #define ultrasonic_Pin GPIO_Pin_0 #define ultrasonic_Pin_t GPIO_Pin_1 #define ultrasonic_RCC RCC_APB2Periph_GPIOA //使能 #define Trig_H GPIO_SetBits(ultrasonic_GPIOx,GPIO_Pin_0) #define Trig_L GPIO_ResetBits(ultrasonic_GPIOx,GPIO_Pin_0) #define Echo_H GPIO_SetBits(ultrasonic_GPIOx,GPIO_Pin_1) #define Echo_L GPIO_ResetBits(ultrasonic_GPIOx,GPIO_Pin_1) void ultrasonic_Init( u16 arr, u16 psc ); void ENABLE_TIM(void); void DISABLE_TIM(void); u32 GetCount(void); float Ultrasonic_length(void); //========================================= //main.c #include "debug.h" #include "../General_file/system.h" #include "ch32v30x_usart.h" int main(void) { NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); SystemCoreClockUpdate(); Delay_Init(); USART_Printf_Init(115200);//115200 printf("SystemClk:%d\r\n",SystemCoreClock); printf("ChipID:%08x\r\n", DBGMCU_GetCHIPID()); ultrasonic_Init(1000-1,72-1); float distance = 0; //cm while(1) { distance = Ultrasonic_length(); printf("距离:%3.2f cm\n",distance); Delay_Ms(1000); } } //串口打印如下================================================================== 距离: cm 距离: cm 距离: cm 距离: cm 距离: cm 距离: cm 距离: cm //救救孩子吧,不知道怎么改了

    IO TI pi HC-SR04 sr04超声波测距 沁恒CH32V307

    6206浏览量 18回复量 关注量
  • HC32L136K8TA,低功耗

    [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px]目前使用的是gpio的低功耗例程,在HC32L136K8TA最小开发板上测试功耗始终降不下去,查看过寄存器bgr和adc这些外设都已关闭,我达不到10ua以内,最小只可以达到369ua,求指导一下还该咋样配置代码:[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px]int32_t main(void)[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px]{[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] delay1ms(5000);[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] ///< 配置Demo板上所有不使用的IO为高阻输入,避免端口漏电[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] App_LowPowerModeGpioSet();[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] ///< 进入低功耗模式——深度休眠(使能唤醒后退出中断自动休眠特性)[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] Lpm_GotoDeepSleep(TRUE);[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] while(1)[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] {[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] ;[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] }[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px]}[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px]static void App_LowPowerModeGpioSet(void)[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px]{[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] ///< 打开GPIO外设时钟门控[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] //swd as gpio[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] Sysctrl_SetFunc(SysctrlSWDUseIOEn, TRUE);[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] ///< 配置为数字端口[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] M0P_GPIO->PAADS = 0;[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] M0P_GPIO->PBADS = 0;[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] M0P_GPIO->PCADS = 0;[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] M0P_GPIO->PDADS = 0;[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] ///< 配置为端口输入[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] M0P_GPIO->PADIR = 0XFFFF;[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] M0P_GPIO->PBDIR = 0XFFFF;[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] M0P_GPIO->PCDIR = 0XFFFF;[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] M0P_GPIO->PDDIR = 0XFFFF;[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] ///< 输入上拉[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] M0P_GPIO->PAPD = 0xFFFF;[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] M0P_GPIO->PBPD = 0xFFFF;[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] M0P_GPIO->PCPD = 0xFFFF;[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] M0P_GPIO->PDPD = 0xFFFF;[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px]}[/size][/font][/backcolor][/color]

    pi IO 低功耗 hc32l136 单片机 国产芯片

    2060浏览量 1回复量 关注量
  • N32G432CB不能Debug sos

    [i=s] 本帖最后由 北凉 于 2024-6-7 09:29 编辑 [/i] void FLASH_Unlock();在我的操作系统里使用这个函数的时候直接会导致我无法进入Debug,并且不知道是不是因为这个原因导致我第一次下载完程序以后我就不能第二次从Keil里面直接下载程序了。出问题的时候提示说检测不到芯片,这里我没有将PA13和PA14也就是SWDIO和SWCLK引脚复用成普通IO口并且我没使用这两个GPIO口连接任何外部器件,只是将引脚通过接插件引出来了。 这个问题我是在配置GPIO口的时候增加了一条将PA13和PA14复用成SW下载口,因此没有在提示我找不到芯片。 但是Debug会有一个错误弹窗说是Could not stop Cortex-M device! Please check the JTAG cable. 我用的是创芯工坊下载器的SW接口。 我目前能Debug,但是我的解决方法是把n32g43x_flash.c文件下面的Flash解锁函数中的其中一个FLASH->KEYR = FLASH_KEY1;给注释了。下面是我在程序上的操作,这么做不对但是我应该怎么解决这个问题。 求大佬们帮帮忙。 void FLASH_Unlock(void) { /* Unlocks the FLASH Program Erase Controller */ FLASH->KEYR = FLASH_KEY1; //FLASH->KEYR = FLASH_KEY2; } 这两个至少禁用一个我就能进debug了。

    ck PA IO flash N32G432CB不能Debug

    2893浏览量 0回复量 关注量
  • 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的方波。有没有人知道怎么回事,希望能指点一下,谢谢!

    GD32F303 TI 函数 IO ic ICE

    1312浏览量 1回复量 关注量
  • NUC980驱动SDIO的WIFI模块失败

    自己画的NUC980板子,板载了AP6181模块,内部为43362,驱动失败。 新唐有没有提供此类WIFI模块的配置方法。 有人用NUC980驱动成功过SDIO的WIFI模块吗,NUC980所提供的内核源码支持哪几种SDIO的WIFI模块?

    NUC wifi模块 sd IO 内核

    2587浏览量 11回复量 关注量
  • 这种外部触发IO电路有啥严重问题不?

    现场反馈说是低电平触发不稳定,得延时几个ms才能稳定捕获,外部触发电缆大概 10米长,周围都是24V的直流电机启动和断开,低电平是触发的一些位置传感器信号

    IO 触发 电路 电平 电机启动

    3571浏览量 8回复量 关注量
  • 散热风扇,3.3v io接到fg和pwm吗

    请教这个风扇调速pwm管脚可以直接接到单片机3.3v IO口吗,fg反馈管脚上拉3k电阻后可以直接接到3.3v IO口吗

    PWM IO 管脚 vi 单片机

    1224浏览量 2回复量 关注量