| 
				打卡等级:以坛为家I打卡总天数:224最近打卡:2025-10-18 23:26:17  已绑定手机荣誉版主 
 
	积分2010 
 | 
 
| 一、技术文章 到手的AI8051U,实现双电源切换和多插针的进化。
 
 
 »AI32位8051交流社区,车规 AEC-Q100 Grade1 ›技术交流 ›作品展示 ›到手的AI8051U,实现双电源切换和多插针的进化。 ... 
 
 
 
 二、回复
 1、
 » AI32位8051交流社区,车规 AEC-Q100 Grade1
 ›技术交流 ›ADC/比较器,DMA支持的12位ADC,轨到轨比较器,DAC ›ADC输入这里要接限流电阻吗?如果要接,接多大的限流电 ... 
 
 
 
 19#回复:
 能帮到你就好,毕竟超幅或者超量程,ADC大概率是要出问题的。
 
 2、
 » AI32位8051交流社区,车规 AEC-Q100 Grade1
 ›技术交流 ›其他技术交流 ›MG995舵机PWM电压 
 
 
 
 10#回复:
 好吧
 PWM信号不受舵机外部供电电压影响,可以3.3的。
 
 3、
 » AI32位8051交流社区,车规 AEC-Q100 Grade1
 ›技术交流 ›老鸟反刍/吐槽,新手乐园,毕业设计 ›pwm波形生成 
 
 
 
 5#回复:
 可以用定时器来生成,大概的思路就是定时器定好值,然后在中断里判断引脚高低,用定时器我驱动过6-8个舵机。
 
 4、
 
 »AI32位8051交流社区,车规 AEC-Q100 Grade1 ›技术交流 ›老鸟反刍/吐槽,新手乐园,毕业设计 ›请教在AI8051U擎天柱板子上好用的程序下载到8H8K64U中不 ... 
 
 
 
 沙发回复:
 
 | 1、设置推挽输出的管脚,关闭内部上拉;2、初始化时,RES和D0两个管脚,先置低再置高。
 然后再试下呢?
 | 
 地板回复:
 软件spi和iic驱动oled屏最近都用,不论8h、还是8051u-32bit我都在正常用,而且也做到了8051u-32bit的spi和iic的同时显示不同内容,我看你的代码了,我之前也遇到了跟你一样的问题,但rst和d0在gpio初始化时经过我这样的配置,就没问题了。
 
 6#回复:
 咱俩可能说的不是一回事,你试下我这样。
 /*将D0、D1、RES、DC和CS引脚初始化为推挽输出模式*/
 P2_MODE_OUT_PP(GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4);
 
 /*置引脚默认电平*/
 OLED_W_RES(0);
 OLED_W_D0(0);
 OLED_W_D1(1);
 OLED_W_RES(1);
 OLED_W_DC(1);
 OLED_W_CS(1);
 
 7#回复:
 目前,我在8h、8051u-8、8051u-32模式,同一套改吧改吧都能正常用。
 
 
 5、
 » AI32位8051交流社区,车规 AEC-Q100 Grade1
 ›技术交流 ›BLDC/144MHz-PWM-硬件移相/45路PWM+3路CCP/7组不同周期的PWM/DAC ›求助:8H1K08 SOP16接编码器读不到脉冲数字 [已解决] ... 
 
 
 
 板凳回复:
 官方有出专门的PWM使用例程的,你可以参考。
 我的实测你也可以参考下:
 
  
  
  
  
 官方例程中每次+=2,我选择了一个讨巧的办法实现+=1,实现从0-180控制舵机的demo,希望对你有用。
 视频为实测结果:
 
 
 
 
 地板回复:
 
 | 配置上你对照看一下,但是进中断后,你得在检测到中断后清中断啊void PWMB_ISR(void) interrupt PWMB_VECTOR
 {
 if(PWMB_SR1 & 0x02)        //编码器中断
 {
 PWMB_SR1 &= ~0x02;
 pulse = PWMB_CNTR;        //读取当前编码器计数值
 B_Change = 1;                //标志已有捕捉值
 }
 }
 | 
 
 
 11#回复:
 没用过你这个芯片,但是专门帮你看了手册,功能是有的:
 
  那使用P5.4口的时候,你得在下载选择里确认 “复位脚用作IO口”
 
 
 下面的是验证过的:
 
 
 void PWMA_config(void)
 {
 P_SW2 |= 0x80;                //SFR enable
 
 PWMA_PSCR = 0;        // 预分频寄存器, 分频 Fck_cnt = Fck_psc/(PSCR[15:0]+1), 边沿对齐PWM频率 = SYSclk/((PSCR+1)*(AAR+1)), 中央对齐PWM频率 = SYSclk/((PSCR+1)*(AAR+1)*2).
 PWMA_DTR  = 0;        // 死区时间配置, n=0~127: DTR= n T,   0x80 ~(0x80+n), n=0~63: DTR=(64+n)*2T,
 //                                0xc0 ~(0xc0+n), n=0~31: DTR=(32+n)*8T,   0xE0 ~(0xE0+n), n=0~31: DTR=(32+n)*16T,
 PWMA_ARR    = 0xffff;        // 自动重装载寄存器,  控制PWM周期
 PWMA_CNTR         = 0;                //清零编码器计数器值
 PWMA_SR1    = 0;
 PWMA_SR2    = 0;
 PWMA_PS     = 0;
 PWMA_ENO    = 0;                //IO禁止输出PWM,  bit7: ENO4N, bit6: ENO4P, bit5: ENO3N, bit4: ENO3P,  bit3: ENO2N,  bit2: ENO2P,  bit1: ENO1N,  bit0: ENO1P
 
 PWMA_CCMR1  = 0x01+(10<<4);                // 通道1模式配置, 配置成输入通道, 0~15对应输入滤波时钟数: 1 2 4 8 12 16 24 32 48 64 80 96 128 160 192 256
 PWMA_CCMR2  = 0x01+(10<<4);                // 通道2模式配置, 配置成输入通道, 0~15对应输入滤波时钟数: 1 2 4 8 12 16 24 32 48 64 80 96 128 160 192 256
 PWMA_SMCR   = 2;                // 编码器模式, 模式1或模式2: 每个脉冲两个边沿加减2.   模式3: 每个脉冲四个边沿加减4.
 PWMA_CCER1  = 0x55;                // 配置通道输入使能和极性, 允许输入, 下降沿
 PWMA_PS    |= 0;                // 选择IO, 0:选择P1.0 P1.1, 1:选择P2.0 P2.1, 2:选择P6.0 P6.1,
 PWMA_PS    |= (0<<2);        // 选择IO, 0:选择P1.2 P1.3, 1:选择P2.2 P2.3, 2:选择P6.2 P6.3,
 PWMA_IER    = 0x02;                // 使能中断
 PWMA_CR1    = 0x01;                // 使能计数器, 允许自动重装载寄存器缓冲, 边沿对齐模式, 向上计数,  bit7=1:写自动重装载寄存器缓冲(本周期不会被打扰), =0:直接写自动重装载寄存器本(周期可能会乱掉)
 }
 
 
 
 
 //========================================================================
 // 函数: void PWMA_ISR(void) interrupt PWMA_VECTOR
 // 描述: PWMA中断处理程序.
 // 参数: None
 // 返回: none.
 // 版本: V1.0, 2021-6-1
 //========================================================================
 void PWMA_ISR(void) interrupt PWMA_VECTOR
 {
 if(PWMA_SR1 & 0x02)        //编码器中断
 {
 PWMA_SR1 &= ~0x02;
 pulse = PWMA_CNTR;        //读取当前编码器计数值
 B_Change = 1;                //标志已有捕捉值
 }
 }
 
 
 
 6、
 » AI32位8051交流社区,车规 AEC-Q100 Grade1
 ›技术交流 ›仿真/编译器/汇编器/头文件 ›基于8H8K64U及官方库函数进行新建工程_第二部分 ... 
 
 
 
 板凳回复:
 
 | ..\Library\STC8G_H_Exti.h(29): error C231: 'INT0': redefinition..\Library\STC8G_H_Exti.h(30): error C231: 'INT1': redefinition
 compiling STC8G_H_Exti_Isr.c...
 ..\Library\STC8G_H_Exti.h(29): error C231: 'INT0': redefinition
 ..\Library\STC8G_H_Exti.h(30): error C231: 'INT1': redefinition
 
 对照着找问题不就可以了嘛
 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 
 |