小兴教你做平衡小车-stm32程序开发(PWM)

1 程序分享

main.c文件。

#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
#include "usart.h"
#include "key.h"
#include "tim.h"
#include "pwm.h"
#include "stdio.h"int main(void)
{RCC->APB2ENR |= (uint32_t)0x00000010;//打开GPIOC时钟GPIOC->CRH   &= (uint32_t)0xFF0FFFFF;//使用前清零GPIOC->CRH   |= (uint32_t)0x00300000;//配置PC13为推挽输出,最大速度50MHzDelay_Init();//延时初始化Usart_Init(115200);//串口初始化PWM_Init(899,0);  //(899+1)*(0+1)/72000000hz =  0.0000125s  换成频率为80khzTIM_SetCompare1(TIM3,100);//设置PWM占空比printf("hello world!\r\n");while(1){Delay_ms(10);}
}

pwm.c文件。

#include "stm32f10x.h"
#include "pwm.h"void PWM_Init(uint16_t per,uint16_t psc)
{TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;//定义定时器的结构体GPIO_InitTypeDef GPIO_InitStruct;    //定义GPIO的结构体TIM_OCInitTypeDef TIM_OCInitStruct;  //定义输出比较结构体RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);//打开GPIOA的时钟、复用时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//打开定时器3时钟GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6; //PA6GPIO_InitStruct.GPIO_Speed =GPIO_Speed_50MHz;//速度为50mhzGPIO_Init(GPIOA, &GPIO_InitStruct);//对PA6引脚进行初始化TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;//1分频TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;//向上计数TIM_TimeBaseInitStruct.TIM_Period = per;  //自动装载值TIM_TimeBaseInitStruct.TIM_Prescaler =	psc;//预分频值TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStruct);//对TIM3进行初始化TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1;   //PWM1模式TIM_OCInitStruct.TIM_OCPolarity = TIM_OCNPolarity_Low;//输出比较极性低TIM_OCInitStruct.TIM_OutputState =  TIM_OutputState_Enable;//输出状态使能TIM_OCInitStruct.TIM_Pulse = 0;//初始化占空比为0TIM_OC1Init(TIM3, &TIM_OCInitStruct);//输出比较初始化TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);//输出比较1预装载寄存器使能TIM_Cmd(TIM3,ENABLE);//TIM3使能
}

pwm.h文件。

#ifndef __PWM_H
#define __PWM_H#include "stm32f10x.h"void PWM_Init(uint16_t per,uint16_t psc);#endif

2 逻辑分析仪调试

当使用语句时,TIM_SetCompare1(TIM3,100),波形如下图所示。
在这里插入图片描述
当使用语句时,TIM_SetCompare1(TIM3,450),波形如下图所示。
在这里插入图片描述

当使用语句时,TIM_SetCompare1(TIM3,899),波形如下图所示。
在这里插入图片描述
当使用语句时,TIM_SetCompare1(TIM3,900),波形就是一条直线啦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/723486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

专业的安全数据交换系统,如何进行网间数据安全交换?

网络隔离是企业网络安全管理的重要组成部分,它有助于提高网络的整体安全性,保护企业资产和客户数据,同时满足法规合规要求。很多企业为了防止内部核心数据泄露,都实施了网络隔离,比如划分成内网、外网,有的…

关于爬虫发展历史,价值,问题和应对恶意爬虫的策略

作为一个互联网的技术开发,爬虫不管是自己写的还是所负责的网站被爬,都是挺常见的。 但是一个很常见的东西,却一直没有系统梳理过,今天我们从发展历史,价值,问题和应对恶意爬虫的策略来聊一聊爬虫。 1 爬…

三八妇女节放假么 妇女节放假安排备忘录提醒别忘记

每年的节日像是生活中的小驿站,给我们带来了休息和欢乐。而当三八妇女节临近时,你是否也在期待着那半天的假期呢? 想象一下,公司的走廊里,同事们都在窃窃私语:“三八妇女节会放假吗?”这个问题…

Javaweb之SpringBootWeb案例之自动配置案例的自定义starter实现的详细解析

3.2.4.2 自定义starter实现 自定义starter的步骤我们刚才已经分析了,接下来我们就按照分析的步骤来完成自定义starter的开发。 首先我们先来创建两个Maven模块: 1). aliyun-oss-spring-boot-starter模块 创建完starter模块后,删除多余的文件…

PHP设计模式初探 以前写的完整PPT!!!!!

幻灯片 1: 初探PHP设计模式 copyright CSDN 白毛大侠 幻灯片 2: 我们说别人代码写的烂&#xff0c;烂在哪&#xff1f; 反思我们平时是怎么写代码的&#xff1f; 非开发者如何转开发&#xff08;业务&#xff09; &#xff1f; 一.过程与对象 幻灯片 3: <?…

AFL havoc_stage

AFL fuzz_one函数&#xff0c;有个地方判断skip_deterministic &#xff0c;而AFLNet的例子里面&#xff0c;定义了-d参数&#xff0c;也就是skip_deterministic1&#xff0c;直接进入到havoc_stage&#xff0c;所以这里想分析下havoc_stage。 if (skip_deterministic || queue…

Ollama内网离线部署大模型

为了演示方便&#xff0c;我这里选用参数较小的Qwen1.5-0.5B-Chat模型。 下载GGUF模型 访问huggingface下载qwen1_5-0_5b-chat-q5_k_m.gguf模型。 https://huggingface.co/Qwen/Qwen1.5-0.5B-Chat-GGUF/tree/main注意&#xff1a; huggingface访问不到&#xff0c;可以选择…

华为智慧教室3.0的晨光,点亮教育智能化变革

“教室外有更大的世界&#xff0c;但世界上没有比教室更伟大的地方。” 我们在求学阶段&#xff0c;都听说过这句话&#xff0c;但往往是在走出校园之后&#xff0c;才真正理解了这句话。为了让走出校园的孩子能够有能力&#xff0c;有勇气探索广阔的世界。我们应该准备最好的教…

@德人合科技|公司数据防泄漏软件,防止内部文件数据资料外泄!

现如今&#xff0c;企业都普遍面临数据安全问题的挑战&#xff0c;随着数据泄漏事件不断增加&#xff0c;企业需要强有力的数据防泄漏系统来保护机密信息。 www.drhchina.com 德人合科技 | 公司数据防泄漏软件&#xff0c;防止内部文件数据资料外泄&#xff01; 公司数据防泄漏…

openGauss环境搭建 | 新手指南

一、搭建准备 openGauss开发需要使用linux环境&#xff0c;先下载远程连接工具Xshell/MobaXterm 。 1. 使用工具连接远程linux服务器&#xff0c;使用root账号远程登录&#xff0c;创建个人账号。 useradd -d /home/xxx -m xxx 2. 设置密码。 passwd xxx 3. 切换到个人账…

【中国电信】光猫 PT632 使用超管权限修改 IP 地址租期时间

背景 由于光猫默认设置的动态 IP 租期是 24 小时&#xff0c;所以每天都会断网一次&#xff0c;严重影响用网体验&#xff0c;所以打算通过修改动态 IP 租期为 一周&#xff08;最长就一周&#xff0c;没有永久的选项&#xff09;来改善。 需求 一台电脑&#xff08;已开启 …

Qt 二维数组的访问与应用

配色方案有多种类型&#xff0c;可以根据不同的需求和应用场景来选择合适的配色方法。在柱状图、饼状图中都会用到不同的配色&#xff0c;本文将配色方案使用二维数组进行存储&#xff0c;对常用的配色进行了整理&#xff1a; 效果图 示例代码 void MainWindow::InitUI() {QS…

java 二分查找(迭代与递归)

二分搜索被定义为一种在排序数组中使用的搜索算法&#xff0c;通过重复将搜索间隔一分为二。二分查找的思想是利用数组已排序的信息&#xff0c;将时间复杂度降低到O(log N)。 二分查找算法示例 何时在数据结构中应用二分查找的条件&#xff1a; 应用二分查找算法&#xff1a…

Android中的传感器类型和接口名称

本文将介绍传感器坐标轴、基础传感器和复合传感器&#xff08;动作传感器、姿势传感器、未校准传感器和互动传感器&#xff09;。 1. 传感器坐标轴 许多传感器的传感器事件值在相对于设备静止的特定坐标系中表示。 1.1 移动设备坐标轴 Sensor API 仅与屏幕的自然方向相关&a…

【每日一题】1976. 到达目的地的方案数-2024.3.5

题目: 1976. 到达目的地的方案数 你在一个城市里,城市由 n 个路口组成,路口编号为 0 到 n - 1 ,某些路口之间有 双向 道路。输入保证你可以从任意路口出发到达其他任意路口,且任意两个路口之间最多有一条路。 给你一个整数 n 和二维整数数组 roads ,其中 roads[i] = […

JavaScript的for循环与双重for循环,妈妈再也不用担心我找工作了

学习路线 第一阶段&#xff1a;网页制作 HTML&#xff1a;常用标签&#xff0c;锚点&#xff0c;列表标签&#xff0c;表单标签&#xff0c;表格标签&#xff0c;标签分类&#xff0c;标签语义化&#xff0c;注释&#xff0c;字符实体 CSS&#xff1a;CSS介绍&#xff0c;全局…

解决MySQL 5.7在Redhat 9中启动报错:libncurses.so.5和libtinfo.so.5缺失问题

在使用Linux系统搭建MySQL数据库的过程中&#xff0c;我们往往会遇到各种依赖库的问题&#xff0c;尤其是在安装较旧版本的MySQL时。最近&#xff0c;在RedHat 9&#xff08;rocky linux 9&#xff09;系统上安装MySQL 5.7版本时&#xff0c;我遇到了一个典型的依赖库缺失错误&…

无法枚举容器内对象 访问被拒绝

一、什么是“无法枚举容器中的对象。访问被拒绝”错误&#xff1f; 在Windows设备当中&#xff0c;对文件或文件夹的权限进行设置可以有效地保护隐私内容。因此&#xff0c;管理员账户可以对权限进行更改&#xff0c;并且有权决定是否将内容共享给多个用户使用。但是在某些情况…

如何使用Python操作MySQL的各种功能?高级用法?

当今互联网时代&#xff0c;数据处理已经成为了一个非常重要的任务。而MySQL作为一款开源的关系型数据库&#xff0c;被广泛应用于各种场景。本篇博客将介绍如何使用Python操作MySQL的各种功能&#xff0c;以及一些高级用法。 连接MySQL 在Python中&#xff0c;我们可以使用p…

在Vue中搭建Three.js环境(超详细、保姆级),创建场景、相机、渲染器《一》

目录 Three.js简介创建vue项目引入Three.js实际操作环节文件目录创建初始化场景、相机 Three.js简介 Three.js 是一款基于 WebGL的 JavaScript 3D 库&#xff0c;它封装了 WebGL API&#xff0c;为开发者提供了简单易用的 API 来在 Web 浏览器中展示 3D 图形。Three.js 提供了…