PWM实现蜂鸣器

tim4.h

#ifndef __TIM4_H__
#define __TIM4_H__
#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_tim.h"
void timer4_init();#endif

tim4.c

#include "tim4.h"void timer4_init()
{// 1. 设置GPIOB,TIM4的时钟使能   RCC_MP_AHB4ENSETR  RCC_MP_APB1ENSETRRCC->MP_AHB4ENSETR |= (0x1 << 1);RCC->MP_APB1ENSETR |= (0x1 << 2);// 2. 设置PB6引脚为复用功能       GPIOB_MODERGPIOB->MODER &= (~(0x3 << 12));GPIOB->MODER |= (0x2 << 12);// 3. 设置PB6引脚为TIM4_CH1功能   GPIOB_AFRLGPIOB->AFRL &= (~(0xF << 24));GPIOB->AFRL |= (0x2 << 24);// 4. 设置预分频寄存器,TIM4_PSC[15:0]  CK_PSC = 209MHz  //      提供给TIM4的时钟源的频率是209MHzTIM4->PSC = 20900-1;    // 5. 设置PWM方波的最终的周期  TIM4_ARR[15:0]  自动装载寄存器//      得到一个1000-2000Hz的方波TIM4->ARR =10000;// 5. 设置PWM方波的占空比   TIM4_CCR1[15:0]  比较寄存器TIM4->CCR1 = 7000;// 6. 设置TIM4_CH1通道为PWM1模式  //      TIM4_CCMR1[16]  TIM4_CCMR1[6:4]  pwm模式1  = 0b0110TIM4->CCMR1 &= (~(0x1 << 16));TIM4->CCMR1 &= (~(0x7 << 4));TIM4->CCMR1 |= (0x6 << 4);// 7. 设置TIM4_CH1通道使能TIMx_CCR1预加载使能寄存器  比较寄存器使能//      TIM4_CCMR1[3] = 0x1TIM4->CCMR1 |= (0x1 << 3);// 8. 设置TIM4_CH1通道输出PWM方波的极性,//    TIM_CCER[3] = 0b0 TIM4_CCER[1] = 0x1 or 0x0TIM4->CCER &= (~(0x1 << 3));TIM4->CCER |= (0x1 << 1);//TIM4->CCER &= (~(0x1 << 1));// 9. 设置TIM4_CH1通道的输出使能位,输出PWM方波 //      TIM4_CCER[0] = 0x1TIM4->CCER |= (0x1 << 0);// 10. 设置TIM4_CH1通道的预装载寄存器的缓冲区的使能//      TIM4_CR1[7] = 0x1TIM4->CR1 |= (0x1 << 7);// 11. 设置定时器的计数方式,边沿对齐//      TIM4_CR1[6:5] = 0x0TIM4->CR1 &= (~(0x3 << 5));// 12 设置定时器计数的方向,采用递减计数/递增计数 //      TIM4_CR1[4] = 0x1 TIM4->CR1 |= (0x1 << 4);// 13. 使能TIM4_CH1计数器 //      TIM4_CR1[0] = 0x1TIM4->CR1 |= (0x1 << 0);
}

main.c

#include "tim4.h"void delay(int ms){int i,j;for(i=0;i<ms;i++){for(j=0;j<2000;j++);}}int num[10] = {0xFC,0x60,0xDA,0xF2,0x66,0xB6,0x3E,0xE0,0xFE,0xF6};int main(){timer4_init();while(1){}//保证程序不结束return 0;}

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

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

相关文章

这个食堂管理大招,再不知道就晚了!

随着社会的不断发展&#xff0c;餐饮行业也在不断创新和进步。在这个数字化时代&#xff0c;智能技术为各行各业提供了更高效、便捷的解决方案。 食堂作为人们日常生活中不可或缺的一部分&#xff0c;也迎来了智能化的时代。智慧收银系统不仅提高了食堂的运营效率&#xff0c;还…

PIC单片机项目(4)——基于PIC16F877A的温度光照检测装置

1.功能设计 基于PIC16F877A单片机&#xff0c;使用DS18B20进行温度测量&#xff0c;使用光敏电阻进行光照测量&#xff0c;将测量值实时显示在LCD1602屏幕上&#xff0c;同时可以设定光照阈值和温度阈值。当温度大于阈值&#xff0c;则蜂鸣器报警&#xff0c;当光照小于阈值&am…

MIPS CPU设计(基于华中科技大学计组实验)

来都来了给我点个赞收藏一下再走呗~~~&#x1f339;&#x1f339;&#x1f339;&#x1f339;&#x1f339; 本次实验要求我们掌握的是MIPS CPU设计&#xff0c;而此实验中关注的重点是在计算机中的cpu的运行模式&#xff0c;这个模式可以参考冯诺伊曼的计算机架构去理解&#…

详细教程 - 进阶版 鸿蒙harmonyOS应用 第十二节——鸿蒙操作系统中的动画效果封装:Java和TypeScript版

简介 动画效果是开发鸿蒙应用时的一个重要功能。在这篇文章中&#xff0c;我们将详细探讨如何在鸿蒙系统中使用Java和TypeScript实现动画效果的封装&#xff0c;并提供一些代码示例。 Java版动画效果的实现 在鸿蒙操作系统中&#xff0c;我们可以使用ohos.agp.animation.Anima…

全国县级行政区点位数据,Shp+excel格式

基本信息. 数据名称: 县级行政区点位 数据格式: Shpexcel 数据时间: 2021年 数据几何类型: 点 数据坐标系: WGS84坐标系 数据来源&#xff1a;网络公开数据 数据字段&#xff1a; 序号字段名称字段说明1xzqhdm_1省代码2xzqhmc_1省名称3xzqhdm_2市代码4xzqhmc_2市代…

ZKP Commitment (2)

MIT IAP 2023 Modern Zero Knowledge Cryptography课程笔记 Lecture 5: Commitment 2 (Ying Tong Lai) Polynomial Commitment f(x) a 0 a_0 a0​ a 1 x a_1x a1​x a 2 x 2 a_2x^2 a2​x2 … \dots … a n x n a_nx^n an​xn a i a_i ai​ is secret commit(f,…

基于 Flink 构建实时数据湖的实践

本文整理自火山引擎云原生计算研发工程师王正和闵中元在本次 CommunityOverCode Asia 2023 数据湖专场中的《基于 Flink 构建实时数据湖的实践》主题演讲。 实时数据湖是现代数据架构的核心组成部分&#xff0c;随着数据湖技术的发展&#xff0c;用户对其也有了更高的需求&…

t-SNE高维数据可视化实例

t-SNE&#xff1a;高维数据分布可视化 实例1&#xff1a;自动生成一个S形状的三维曲线 实例1结果&#xff1a; 实例1完整代码&#xff1a; import matplotlib.pyplot as plt from sklearn import manifold, datasets """对S型曲线数据的降维和可视化"&q…

JS考试家和会员注册(网页数据验证)

主代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><link rel"stylesheet" href"css/regist.css" /><link rel"stylesheet" href"css/common.css" /><link rel"sty…

WordPress主题 响应式个人博客主题Kratos源码

Kratos 是一款专注于用户阅读体验的响应式 WordPress 主题&#xff0c;整体布局简洁大方&#xff0c;针对资源加载进行了优化。 Kratos主题基于Bootstrap和Font Awesome的WordPress一个干净&#xff0c;简单且响应迅速的博客主题&#xff0c;Vtrois创建和维护&#xff0c; 主…

基于ssm大学学生成长系统论文

摘 要 随着互联网技术的发展&#xff0c;各类网站应运而生&#xff0c;网站具有新颖、展现全面的特点。因此&#xff0c;为了满足阜阳师范大学学生成长管理的需求&#xff0c;特开发了本阜阳师范大学学生成长系统。 本阜阳师范大学学生成长系统采用Java技术&#xff0c;基于SS…

Apollo开放平台9.0让自动驾驶开发者轻松上手

文章目录 平台架构&#xff1a;基础环境&#xff1a;开始使用&#xff1a;体验心得: 在自动驾驶技术飞速发展的今天&#xff0c;成为这个领域的一名开发者是一次挑战、一次冒险&#xff0c;更是一次心灵之旅。作为这个领域的先锋之一&#xff0c;Apollo开放平台9.0于12月19日发…