173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

stm32产品实验mqtt协议输出

keros@mark 2023-03-17 资讯中心

STM32 PWM输出实验

这个函数不是固件库里的函数,应该是哪一个人自己写的,看后面的注释大概意思是:PWM的输出频率为TIM3的900分频(很多写分频的函数,分频系数都是实际的分频系数减去1),TIM3的时钟频率为72MHz.。不分频估计是系统时钟频率为72MHz,,TIM3的时钟频率是系统时钟频率的1分频,也为72MHz

关于stm32与服务器通信的问题?

你是想用web远程监控单片机的运行,但是不知道怎么把单片机的信息上传到服务器,转化成web页面展示出来,我做过一个是通过阿里云IOT实现的

单片机内加入MQTT协议,与阿里云服务器通信,可以通过IOT studio快速配置生成web

官方给到历程是都是通过ESP的WiFi来联网。我做的是通过W5500联网的

把C语言Link Kit SDK移植到stm32单片机中,web由IOT studio生成。

如何用stm32产生PWM输出?

voidTimer4PwmInit(void)

{

GPIO_InitTypeDefGPIO_InitStructure;

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

TIM_OCInitTypeDef TIM_OCInitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB |RCC_APB2Periph_AFIO,ENABLE); //

使能GPIO外设和AFIO复用功能模块时钟

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //复用推挽输出

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOB,GPIO_InitStructure);//初始化GPIO

//初始化TIM4

TIM_TimeBaseStructure.TIM_Period=PWM_PERIOD;

TIM_TimeBaseStructure.TIM_Prescaler=PRECALERS;

TIM_TimeBaseStructure.TIM_ClockDivision=0;//设置时钟分割:TDTS=Tck_tim

TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //TIM向上计数模式

TIM_TimeBaseInit(TIM4,TIM_TimeBaseStructure);

//初始化TIM4ChannelPWM模式

TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;

TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//比较输出使能

TIM_OCInitStructure.TIM_Pulse=0;//TIM-CCR=0

TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;

TIM_OC1Init(TIM4,TIM_OCInitStructure);

TIM_OC1PreloadConfig(TIM4,TIM_OCPreload_Enable); //使能TIM4在CCR1上的预装载寄存器

TIM_OC2Init(TIM4,TIM_OCInitStructure);

TIM_OC2PreloadConfig(TIM4,TIM_OCPreload_Enable);

TIM_OC3Init(TIM4,TIM_OCInitStructure);

TIM_OC3PreloadConfig(TIM4,TIM_OCPreload_Enable);

TIM_OC4Init(TIM4,TIM_OCInitStructure);

TIM_OC4PreloadConfig(TIM4,TIM_OCPreload_Enable);

TIM_ARRPreloadConfig(TIM4,ENABLE);

TIM_Cmd(TIM4,ENABLE); //使能TIM4

}

STM32通用定时器PWM输出

脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。

STM32 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。而通用定时器也能同时产生多达 4路的 PWM 输出,这样,STM32 最多可以同时产生 30 路 PWM 输出!这里我们仅利用 TIM3的 CH2 产生一路 PWM 输出。

PWM 相关的函数设置在库函数文件 stm32f10x_tim.h 和 stm32f10x_tim.c文件中。

TIM3_CH2 默认是接在 PA7上面的,而我们的 LED0 接在 PB5 上面,如果普通 MCU,可能就只能用飞线把 PA7 飞到 PB5上来实现了,不过,我们用的是 STM32,它比较高级,可以通过重映射功能,把 TIM3_CH2映射到 PB5 上。

STM32函数库对TIM3重映射有两种方法,一种是完全重映射GPIO_FullRemap_TIM3,这个比较好理解就是把TIM3的所有通道端口映射到Remap指定的端口上;还有一种是部分映射GPIO_PartialRemap_TIM3。

在库函数中,PWM 通道设置是通过函数 TIM_OC1Init()~TIM_OC4Init()来设置的,不同的通道的设置函数不一样,这里我们使用的是通道 2,所以使用的函数是 TIM_OC2Init()。

总结:PWM模式1下,TIMx_CCR1大时有效;PWM模式2下,TIMx_CCR1小有效。

有效电平的高低取决于TIM_OCPolarity的定义。本例子情况如下图:

至此,PWM初始化结束。

本文标签:stm32产品实验mqtt协议输出

产品列表
产品封装
友情链接