/*********************************************************************************************
函数名:PWM初始化函数
调 用:PWM_init();
参 数:无
返回值:无
结 果:将PCA初始化为PWM模式,初始占空比为0
备 注:需要更多路PWM输出直接插入CCAPnH和CCAPnL即可
/**********************************************************************************************/
void PWM_init (void){
CMOD=0x02; //设置PCA定时器
CL=0x00;
CH=0x00;
CCAPM0=0x42; //PWM0设置PCA工作方式为PWM方式(0100 0010)
CCAP0L=0x00; //设置PWM0初始值与CCAP0H相同
CCAP0H=0x00; // PWM0初始时为0
//CCAPM1=0x42; //PWM1设置PCA工作方式为PWM方式(使用时删除//)
//CCAP1L=0x00; //设置PWM1初始值与CCAP0H相同
//CCAP1H=0x00; // PWM1初始时为0
//CCAPM2=0x42; //PWM2设置PCA工作方式为PWM方式
//CCAP2L=0x00; //设置PWM2初始值与CCAP0H相同
//CCAP2H=0x00; // PWM2初始时为0
//CCAPM3=0x42; //PWM3设置PCA工作方式为PWM方式
//CCAP3L=0x00; //设置PWM3初始值与CCAP0H相同
//CCAP3H=0x00; // PWM3初始时为0
CR=1; //启动PCA定时器
}
/**********************************************************************************************/
/*********************************************************************************************
函数名:PWM0占空比设置函数
调 用:PWM0_set();
参 数:0x00~0xFF(亦可用0~255)
返回值:无
结 果:设置PWM模式占空比,为0时全部高电平,为1时全部低电平
备 注:如果需要PWM1的设置函数,只要把CCAP0L和CCAP0H中的0改为1即可
/**********************************************************************************************/
void PWM0_set (unsigned char a){
CCAP0L= a; //设置值直接写入CCAP0L
CCAP0H= a; //设置值直接写入CCAP0H
}
/**********************************************************************************************/
关键字:PWM 占空比设置 函数
引用地址:
PWM初始化,PWM0占空比设置函数
推荐阅读最新更新时间:2024-03-16 14:04
stm32 dac库函数解读
1、简述: 12位数字输入,电压输出,DAC可以配置为8位或12位模式。有2个输出通道。在双DAC模式下,两个通道可以独立地工作。 特殊功能: 噪声波形生成,三角波形生成,外部触发转换,双DAC同时或者分别转换;每个通道都有DMA功能; 参考电压:2.4V~ 3.3V 因为一旦使能DAC通道,那么相应的GPIO便自动地连接到DAC转换器,因此,模拟输出前应该设置成模拟输入,目的是避免寄生的干扰和额外的功耗; 2、函数介绍: (1)缺省函数 DAC_Init(); (2)DAC_Init(DAC_Channel_1,&DAC_InitStructure);初始化函数 DAC_InitTypeDef DA
[单片机]
STM32 FreeRTOS 外部中断服务函数注意事项
移植正点原子的FreeRTOS操作系统到我们自己的工程,发现的一个注意事项; 看下面代码,带FreeRTOS的外部中断服务函数,实现按键消抖,不能用delay_ms()或者和vTaskDelay(),会导致系统奔溃; 原因是delay_ms()其实就是对 FreeRTOS 中的延时函数 vTaskDelay()的简单封装,所以在使用 delay_ms()的时候就会导致任务切换,即不会导致这个外部中断延时阻塞,而切换到其他任务,导致外部中断出错; 这里我们可以使用delay_xms(),其不会引起任务调度,是真的延时;(仅针对外部中断函数,因为我发现在按键扫描函数里面,可以使用delay_ms();) //提供框架-
[单片机]
6步教你在STM32程序中添加 printf函数
前提是你有一个完整的keil工程 比如ADC的 调试的时候很多时候用到串口 这里教你怎么样使用Printf 函数 在程序中添加Printf 1, #include stdio.h 2, /* Private functions ---------------------------------------------------------*/ 下添加 void USART_Configuration(void); #ifdef __GNUC__ /* With GCC/RAISONANCE, small printf (option LD Linker- Libraries- Small printf set t
[单片机]
51单片机产生pwm 占空比10khz频率 Proteus仿真程序
仿真原理图如下 单片机源程序如下: #include reg51.h #define uchar unsigned char #define uint unsigned int sbit pwm=P1^1; uchar num=0; main() { TMOD=0x02; TH0=TL0=206; ET0=1; TR0=1; EA=1; while(1); } void init() interrupt 1 { num++; if(num =6) pwm=1; else pwm=0; if(num==10)
[单片机]
STM32中的timers中断处理函数
1.在固件库函数里面,用来读取中断状态寄存器的值判断中断类型的函数是: ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t) 作用:判断定时器TIMx的中断类型TIM_IT是否发生中断。 比如,我们要判断定时器3是否发生更新(溢出)中断,方法为: if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) { } 2.固件库中清除中断标志位的函数是: void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT) 作用:清除定时器TIMx的中断TIM_IT标志位。 比如我们
[单片机]
一款电流模式PWM单片式降压稳压器电路图设计
AP2420是一款电流模式PWM单片式降压稳压器,其输入电压范围为2.5V到6V,输出电流可以达到2A,输出电压可以低至0.6V。由于扩展板与核心板的电流总和不会超过2A,故采用AP2420仅作为微控制器核心的电源稳压器可以完全满足电流要求。其电路如图3.3所示
[电源管理]
stm32 重定义printf导致无法跳到main函数问题
使用了printf之类的库函数,需要编写_sys_exit()之类底层函数。_sys_xxx之类的的只要写个空函数就行了。 因printf()之类的函数,使用了半主机模式。使用微库的话,不会使用半主机模式,所以就没有问题。 添加下面代码,就可以使用标准库了: #pragma import(__use_no_semihosting) _sys_exit(int x) { x = x; } struct __FILE { int handle; /* Whatever you require here. If the only file you are using is */ /* standard output
[单片机]
采用 3mm x 3mm DFN 封装的2MHz、1.2A(IOUT)36V 降压型 DC/DC 转换器
2006 年 9 月 11 日 - 北京 - 凌力尔特公司( Linear Technology Corporation )推出电流模式 PWM 降压型 DC/DC 转换器 LT3505 ,该器件具有内部 1.75A 开关,采用纤巧 8 引线 3mm x 3mm DFN 封装。 LT3505 的 3.6V 至 36V 宽输入范围和可承受 40V 瞬态的能力使其非常适用于调节来自多种不同的电源,如未稳压的墙上变压器、 24V 工业电源和汽车电池。就汽车应用而言, LT3505 的 3.6V 最低输入电压使
[新品]