-
MM32咋时不时冒出个识别不到芯片问题,发帖都没人回的?
[color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px]代码用的例程GPIO_LED_TOGGLE,用的是开发板上自带的的烧录器,报RDDI-DAP ERROR 错误,有时候又识别的到,一点下载就报这个错,有时候又可以下载,下载代码后又识别不到芯片,又报RDDI-DAP ERROR 错误错,用keil进入debug会自动把项目关闭掉,这是什么鬼问题?[/size][/font][/backcolor][/color]
2590浏览量 13回复量 关注量 -
G0001最小开发板识别不到芯片 sos
代码用的例程GPIO_LED_TOGGLE,用的是开发板上自带的的烧录器,报RDDI-DAP ERROR 错误,有时候又识别的到,一点下载就报这个错,有时候又可以下载,下载代码后又识别不到芯片,又报RDDI-DAP ERROR 错误错,用keil进入debug会自动把项目关闭掉,这是什么鬼问题?
798浏览量 0回复量 关注量 -
请教一下STC12H1K输出PWM的问题 sos
[i=s] 本帖最后由 chenczyaa 于 2024-7-3 08:49 编辑 [/i] 代码如下,我的P3.5脚 没PWM输出的,好奇怪。void pwm_init() { CCON = 0x00; // CL = 0; //PCA计数器 低8位 CH = 0; //PCA计数器 高8位 CMOD = 0x00; //选择时钟源为系统时钟源的1/12 CCAPM0 = 0x42; //0100 0010 允许比较器,允许PWM0引脚输出 //PCA_PWM0=0x00; //8位PWM PCA_PWM0=0x40; //7位PWM CCAP0H = CCAP0L = 0x00; //设置占空比为 0 PWMA_PS = 0xff; PWMB_PS = 0xf3;//P3.5输出PWM CR = 1; //启动 PCA 计数器阵列 } main() { uchar key1up=0,key2up=0,gear1=0,gear2=0; /* TMOD =0x00; //0模式16位自动重装载 TL0=0x66; //1ms初值 TH0=0xfc; TR0=1;// 启动定时器0 ET0=1;// 开启定时器0中断 EA=1;// 开启整个中断系统 */ P1M0=0x00;//设置P1为准双向口 P1M1=0x00; P3M0=0x00;//设置P3为准双向口 P3M1=0x00; //P1=0xff; //P35=0; pwm_init(); //PCA_PWM0=0x02;CCAP0H= CCAP0L=0xFF; //固定输出低 //PCA_PWM0=0x00;CCAP0H= CCAP0L=0x00; //固定输出高 //CCAP0L=0x20;//PWM占空比(100H-20H)/100H(87.5%)//8位PWM //CCAP0H=0x20; CR = 0; //CCAP0L=0xCC;//PWM占空比(100H-CCH)/100H(20%)//8位PWM //CCAP0H=0xCC; CCAP0L=0x20;//PWM占空比(80H-20H)/80H(75%)//7位PWM CCAP0H=0x20; CR = 1; P34=0; while(1) { delay(4000); P34 = ~P34; } }
840浏览量 0回复量 关注量 -
GD32A503 TIMER 上溢UP中断与CAP中断优先级有一定几率反转问题
测试硬件:GD32A503CC测试外设:TIMER0_CH1 测试准备:PE5输入高频PWM 中断优先级配置:UP中断高于CH1中断 void nvic_configuration(void) { nvic_priority_group_set(NVIC_PRIGROUP_PRE1_SUB3); nvic_irq_enable(TIMER0_BRK_UP_TRG_CMT_IRQn, 1, 0); nvic_irq_enable(TIMER0_Channel_IRQn, 1, 1); } 测试定时器配置:配置TIMER0_CH1为双沿输入捕获模式,使能TIMER0 UP上溢与CH1中断。 void timer_configuration(void) { /* TIMER1 configuration: input capture mode ------------------- the external signal is connected to TIMER0 CH1 pin (PE5) the rising edge is used as active edge the TIMER1 CH0CV is used to compute the frequency value ------------------------------------------------------------ */ timer_ic_parameter_struct timer_icinitpara; timer_parameter_struct timer_initpara; rcu_periph_clock_enable(RCU_TIMER0); timer_deinit(TIMER0); /* TIMER0 configuration */ timer_struct_para_init(&timer_initpara); timer_initpara.prescaler = 99; timer_initpara.alignedmode = TIMER_COUNTER_EDGE; timer_initpara.counterdirection = TIMER_COUNTER_UP; timer_initpara.period = 65535; timer_initpara.clockdivision = TIMER_CKDIV_DIV1; timer_initpara.repetitioncounter = 0; timer_init(TIMER0, &timer_initpara); /* TIMER0 configuration */ /* TIMER0 CH1 input capture configuration */ timer_channel_input_struct_para_init(&timer_icinitpara); timer_icinitpara.icpolarity = TIMER_IC_POLARITY_BOTH_EDGE; timer_icinitpara.icselection = TIMER_IC_SELECTION_DIRECTTI; timer_icinitpara.icprescaler = TIMER_IC_PSC_DIV1; timer_icinitpara.icfilter = 0x0; timer_input_capture_config(TIMER0, TIMER_CH_1, &timer_icinitpara); /* auto-reload preload enable */ timer_auto_reload_shadow_enable(TIMER0); /* clear channel 0 interrupt bit */ timer_interrupt_flag_clear(TIMER0, TIMER_INT_FLAG_UP); /* channel 0 interrupt enable */ timer_interrupt_enable(TIMER0, TIMER_INT_UP); /* clear channel 0 interrupt bit */ timer_interrupt_flag_clear(TIMER0, TIMER_INT_FLAG_CH1); /* channel 0 interrupt enable */ timer_interrupt_enable(TIMER0, TIMER_INT_CH1); /* TIMER0 counter enable */ timer_enable(TIMER0); } 中断处理: __IO uint16_t u16_cap_tick = 0; __IO uint32_t u32_cap_tick = 0; __IO uint32_t u32_cap_tick_pre = 0; __IO uint16_t ovf_cont = 0; __IO uint32_t err_cnt = 0; void TIMER0_BRK_UP_TRG_CMT_IRQHandler(void) { if(SET == timer_interrupt_flag_get(TIMER0, TIMER_INT_FLAG_UP)) { /* clear channel1 interrupt bit */ timer_interrupt_flag_clear(TIMER0, TIMER_INT_FLAG_UP); /* count overflow value */ ovf_cont++; } } void TIMER0_Channel_IRQHandler(void) { if(SET == timer_interrupt_flag_get(TIMER0, TIMER_INT_FLAG_CH1)) { /* clear channel1 interrupt bit */ timer_interrupt_flag_clear(TIMER0, TIMER_INT_FLAG_CH1); /* read channel 1 capture value */ u16_cap_tick = timer_channel_capture_value_register_read(TIMER0, TIMER_CH_1); u32_cap_tick_pre = u32_cap_tick; u32_cap_tick = u16_cap_tick + (ovf_cont << 16); if(u32_cap_tick_pre > u32_cap_tick) { err_cnt++; } } } 出现问题:TIMER0 CNT接近上溢时发生CH1捕获中断, 捕获中断有一定几率先于UP中断处理,导致err_cnt计数错误。 示例中,err_cnt会有计数。
9477浏览量 11回复量 关注量 -
关于MM32F5277无法运行在指定的rom地址中
[color=#2e3033][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "]我正在使用MM32F5277设计一个bootloader和app,但是app无法在我指定的rom地址运行,[/font][/backcolor][/color][color=#2e3033][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "]修改MDK中option->Target中的IROM地址和大小无法生效,[/font][/backcolor][/color] [color=#2e3033][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "]app还是运行在默认的0x08000000,[/font][/backcolor][/color] [color=#2e3033][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "]修改mm32f5277e_flash.scf文件中:[/font][/backcolor][/color] [color=#2e3033][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "]__ROM_BASE为 0x08008000;[/font][/backcolor][/color] [color=#2e3033][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "]__ROM_SIZE为 0x00038000;[/font][/backcolor][/color] [color=#2e3033][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "]app无法正常运行,通过MDK的debug模式可以看到上电后无法访问内存[/font][/backcolor][/color] [font=-apple-system, BlinkMacSystemFont, PingFang SC, Microsoft YaHei, sans-serif][color=#2e3033]Cannot access Memory ([url=home.php?mod=space&uid=72445]@[/url] 0xfffffffe, Read, Acc Size: 2 Byte)[/color][/font]
1280浏览量 1回复量 关注量