历史上的今天
今天是:2024年09月27日(星期五)
2021年09月27日 | stm32 pwm波 输出的对应通道
2021-09-27 来源:eefocus
(1) 定时器通道的管脚是确定的,不能随意改动。博主现在用的是STM32f103c8,其它的可以查相应的手册。
详细配置如下:
TIM1_CH1->PA8;
TIM1_CH2->PA9;
TIM1_CH3->PA10;
TIM1_CH4->PA11;
TIM2_CH1->PA0;
TIM2_CH2->PA1;
TIM2_CH3->PA2;
TIM2_CH4->PA3;
TIM3_CH1->PA6;
TIM3_CH2->PA7;
TIM3_CH3->PB0;
TIM3_CH4->PB1;
TIM4_CH1->PB6;
TIM4_CH1->PB7;
TIM4_CH1->PB8;
TIM4_CH1->PB9;
(2)不是所有的芯片都有重映像功能的,STM32f103c8这四个定时器就不需要重映像。
(3)定时器输出需要设置各个模块:
1)相应时钟要提前进行使能,其中包括TIMx,GPIO(用到哪个可以开哪个,初学者也可以全开起;
比如说:用TIM4 ,并且用到GPIOA 、GPIOB:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);
2)GPIO相应管脚模式设置
这里开启PB6~PB8
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6
|GPIO_Pin_7
|GPIO_Pin_8
|GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOB,&GPIO_InitStructure);
3)定时器设置(下面的例子是产生4个通道的PWM)
void TIM_Configuration(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_DeInit(TIM4);
TIM_TimeBaseStructure.TIM_Period=(100-1); //ARR的值 设定为100方便后期计算
TIM_TimeBaseStructure.TIM_Prescaler=(4000-1);
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; //采样分频
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0x0;
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
TIM_ARRPreloadConfig(TIM4, ENABLE);//使能ARR预装载缓冲器
/* Channel 1 Configuration in PWM mode */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //PWM模式1
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //正向通道有效
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;//反向通道无效
TIM_OCInitStructure.TIM_Pulse = 100; //占空时间
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High; //互补端的极性
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;
TIM_OC1Init(TIM4,&TIM_OCInitStructure); //通道1
TIM_OCInitStructure.TIM_Pulse = 80; //占空时间
TIM_OC2Init(TIM4,&TIM_OCInitStructure); //通道2
TIM_OCInitStructure.TIM_Pulse = 40; //占空时间
TIM_OC3Init(TIM4,&TIM_OCInitStructure); //通道3
TIM_OCInitStructure.TIM_Pulse = 20; //占空时间
TIM_OC4Init(TIM4,&TIM_OCInitStructure); //通道4
TIM_OCInitStructure.TIM_Pulse = 10; //占空时间
/* TIM1 counter enable */
TIM_Cmd(TIM4,ENABLE);
/* TIM1 Main Output Enable */
TIM_CtrlPWMOutputs(TIM4,ENABLE);
}
史海拾趣
|
在ads里 字符串操作 不会。举个简单例子,我读取时间寄存器得到 年月日 向组合 城 2007年 5月5日 这样显示 就是在数据中间加上汉字年月日 我竟然不会,研究两天了 ,在pc上特容易的事在这 …… … 查看全部问答> |
|
void CUniButton::DrawButtonCaption(HDC hDC, CRect * pRect, BOOL bEnabled, BOOL bSunken) { // select parent font int nOldMode = SetBkMode(hDC,OPAQUE); CString text; &nbs ...… 查看全部问答> |
|
我用的是intel82559er网卡,amd的Geode GX!处理器,选用的tornado软件为pc486的,config.h中修改如下“eevER(0,0)host:vxworks h=192.168.0.11 e=192.168.0.12 u=txd pw=targer tn=target”,启动盘插入目标机后,目标机显示几行配置参数,然后显示 ...… 查看全部问答> |
|
网络协议芯片和用处理器写协议,这两种操作各自的优点和缺点是什么 如题,网络协议芯片和用处理器或者FPGA写网络协议直接跟以太网PHY芯片连接,这两种操作各自的优点和缺点是什么,比如用网络协议芯片W5300或者用PHY芯片,我不太明白为什么有协议芯片,还有那么多人或公司都自己写协议… 查看全部问答> |
|
user guide 中文版用户指南向导 010 翻译slau144i 20OA ......... ......... ......... ......... .......................52520.1OA Introduction ......... ......... ......... ......... .52620.2OA Operation ......... ......... ......... ......... ...52720.2.1 OA Amplifier ......... .. ...… 查看全部问答> |
|
新手求助,毕业设计的题目,首次接触zigbee 卖了两块cc2530,做了通信的实验,现在要做室内定位系统的实现,网上查了,有以下方案 1. cc2430 / cc2431 (带定位引擎) 实现定位 2. cc2530 实现定位 (自己实现算法) 貌似精度都不怎么高,1m开外 ...… 查看全部问答> |
|
求助!STM32F103C8 cannot enter debug mode 我新建了项目工程,目标器件stm32F103c8编译成功,用JLINK Flash可以直接烧写进去,用keil MDK不能下载,提示cannot enter debug mode,但我的其他项目工程,用JTAG可以下载,是什么原因?请高手解救!… 查看全部问答> |
|
在项目中需要一个8*16的矩阵键盘,扫描得出键值之后通过串口发送,mcu用的是xMega,当然这个无关紧要,中间会有串口接收中断。 现在发现的现象是:按键迟滞,按键丢失 我想考虑的是: 1.按键扫描是用哪种方式好? 书本上用的 是 ...… 查看全部问答> |




