重学STM32---(四)
今天把定时器看了一遍,觉得很有必要把记下来时常看一看
定时器3初始化,很简单,开时钟,装载ARR,PSC寄存器就行了,想要开什么中断在DIER寄存器设置就行了(不过当时我花了很长时间,用寄存器真的不熟)
void Timer3_init(u16 arr,u16 psc)
{
RCC->APB1ENR |= 1<<0;
TIM3->CR1 |= (1<<7)|(1<<4); //自动预装载,向下计数
TIM3->PSC = psc; //预分频寄存器 72000000/psc 定时器工作频率
TIM3->ARR = arr; //装载值
TIM3->DIER |= 1<<0;
MY_NVIC_Init (3,3,TIM3_IRQn,2);
TIM3->CR1 |= (1<<0); //定时器使能
}
//中断函数
void TIM3_IRQHandler()
{
while(TIM3->SR & (1<<0))
{
TIM3->SR &= ~(1<<0);
LED1 = !LED1;
}
}
后来又用定时器的PWM利用led编了呼吸灯的程序:(花了很长时间,,,)
先开启时钟(定时器的,特别一个辅助时钟,不开不能正常工作),再设置CHx所在的IO口为复用推挽输出,需要重映射的使用AFIO->MAPR寄存器,然后再配置TIM3->CCER,TIM3->CCMR1 寄存器,向上向下计数,高低电平有效,pwm1还是pwm2,自己选择就好了,看情况决定
void Timer3_pwm_Init(u16 arr,u16 psc)
{
RCC->APB1ENR |= 1<<1; //使能TIM3
RCC->APB2ENR|=1<<0; //开启辅助时钟 //必须要开定时间1时钟,说是什么辅助时钟,到现在还不知道怎么回事,
RCC->APB2ENR|=1<<3; //使能PORTB时钟
MYGPIOB ->CRL &= ~0x00F00000; //设置PB5为推挽复用输出
MYGPIOB ->CRL |= 0x00B00000;
AFIO->MAPR&=0XFFFFF3FF; //清除MAPR的[11:10]
AFIO->MAPR|=1<<11; //部分重映像,TIM3_CH2->PB5
TIM3->ARR = arr;
TIM3->PSC = psc;
TIM3->CCER |= 1<<4; //通道2输出使能
TIM3->CR1 |= (1<<7); //自动预装载,向下计数 这两个可以默认,自己知道就行了
TIM3->CCER |= (1<<5); //输出低电平有效
TIM3->CCMR1 |= 1<<11; //CH2使能输出
TIM3->CCMR1 &= ~(7<<12); //清零bit4-6
TIM3->CCMR1 |= (6<<12); //设置110,为pwm1模式
TIM3->CR1 |= (1<<0); //使能定时器
}
主函数:(这个自己看着写就行了)
int main()
{
u8 dir = 0;
short crr_count = 0;
Stm32_Clock_Init (9);
LED_Init ();
delay_init(72);
Timer3_Init(899,0);
while(1)
{
delay_ms(10);
if (dir == 0)
crr_count ++;
else
crr_count --;
if (crr_count > 899)
dir = 1;
if (crr_count < 0)
dir = 0;
TIM3->CCR2 = crr_count ;
}
}
重学STM32---(四)的更多相关文章
- 重学前端 --- Promise里的代码为什么比setTimeout先执行?
首先通过一段代码进入讨论的主题 var r = new Promise(function(resolve, reject){ console.log("a"); resolve() ...
- 重学 Java 设计模式:实战抽象工厂模式
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获!
- 重学 Java 设计模式:实战单例模式
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 5个创建型模式的最后一个 在设计模式中按照不同的处理方式共包含三大类:创建型模式.结 ...
- 重学 Java 设计模式:实战适配器模式
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 擦屁屁纸80%的面积都是保护手的! 工作到3年左右很大一部分程序员都想提升自己的技术 ...
- 重学 Java 设计模式:实战桥接模式(多支付渠道「微信、支付宝」与多支付模式「刷脸、指纹」场景)
作者:小傅哥 博客:https://bugstack.cn - 编写系列原创专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 为什么你的代码那么多ifelse 同类的业务.同样的功能, ...
- 重学 Java 设计模式:实战装饰器模式(SSO单点登录功能扩展,增加拦截用户访问方法范围场景)
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 对于代码你有编程感觉吗 很多人写代码往往是没有编程感觉的,也就是除了可以把功能按照固 ...
- 重学 Java 设计模式:实战外观模式「基于SpringBoot开发门面模式中间件,统一控制接口白名单场景」
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 你感受到的容易,一定有人为你承担不容易 这句话更像是描述生活的,许许多多的磕磕绊绊总 ...
- 重学 Java 设计模式:实战享元模式「基于Redis秒杀,提供活动与库存信息查询场景」
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 程序员的上下文是什么? 很多时候一大部分编程开发的人员都只是关注于功能的实现,只 ...
- 重学 Java 设计模式:实战代理模式「模拟mybatis-spring中定义DAO接口,使用代理类方式操作数据库原理实现场景」
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 难以跨越的瓶颈期,把你拿捏滴死死的! 编程开发学习过程中遇到的瓶颈期,往往是由于看不 ...
随机推荐
- override和overload的区别
override(重写,覆盖) 1.方法名.参数.返回值相同. 2.子类方法不能缩小父类方法的访问权限. 3.子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常). 4.存在于父类和子类之 ...
- 线性渐变--linear-gradient
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> < ...
- CentOS 下的MySQL配置
先贴出代码(/etc/my.cnf)如下: #The following options will be passed to all MySQL clients [client] #password ...
- js模拟快捷键操作表单
<html> <head> </head> <body> <script> //键盘快捷键提交表单ctrl+s document.onkey ...
- netbios wins dns LLMNR
NetBIOS名称 Network Basic Input/Output System (RFC-1001,1002)网络基本输入/输出系统协议 NetBIOS是一种高级网络接口,最初是在硬件中实 ...
- MySql避免全表扫描【转】
原文地址:http://blog.163.com/ksm19870304@126/blog/static/37455233201251901943705/ 对查询进行优化,应尽量避免全表扫描,首先应考 ...
- WEBService动态调用代码
BasicHttpBinding bind = new BasicHttpBinding(); bind.MaxReceivedMessageSize = int.MaxValue; Endpoint ...
- 部分SIM卡被曝存安全漏洞:7.5亿部手机受牵连
7月22日消息,据国外媒体报道,一安全研究人员发现部分移动SIM卡所使用的加密方式存在一个安全漏洞,可能会导致手机被黑客远程控制. DES数据加密标准的SIM卡——DES是一种较旧的标准,目前正被部分 ...
- 二模 (9) day2
第一题: 题目大意:求满足条件P的N位二进制数的个数.P:该二进制数有至少3个0或者3个1挨在一起.. N<=20000 解题过程: 1.一开始直接写了个dfs把表打了出来,不过没发现什么规律, ...
- Oracle 11g 安装
1.Oracle 11g安装: http://www.cnblogs.com/qianyaoyuan/archive/2013/05/05/3060471.html 2.安装完Oracle数据库,给s ...