重学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 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 难以跨越的瓶颈期,把你拿捏滴死死的! 编程开发学习过程中遇到的瓶颈期,往往是由于看不 ...
随机推荐
- Hadoop概括——学习笔记<一>转
前言 第一章主要讲的是hadoop基础知识.老师讲的还是比较全面简单的,起码作为一个非专业码农以及数据库管理人员,也能狗大致了解其特点 首先是概括图(以hadoop2.0为例) 一.Hadoop基础 ...
- MASM6.15汇编程序例子
/***************通过调用(INT 21H)表中的01h号功能号从键盘输入一个字符并回显到视频显示器上*****************/ DATAS SEGMENT ;此处输入数据段代 ...
- smartGit30天试用过期
Windows: %APPDATA%\syntevo\SmartGit\OS X: ~/Library/Preferences/SmartGit/Unix/Linux: ~/.smartgit ...
- centos6.5 64位系统安装 tengine
1 安装pcre 下载好pcre 上传到服务器 我用的版本是pcre-8.31.tar.gz tar -zxvf pcre-8.31.tar.gz cd pcre-8.31 ./confi ...
- 修改weblogic PermGen
vim /weblogic/Oracle/Middleware/wlserver_10.3/common/bin/commEnv.sh 在第144行,增加环境变量:JAVA_VENDOR=Sun #根 ...
- php中curl和fsockopen发送远程数据的应用
最近要用到通过post上传文件,网上盛传的有curl的post提交和fsockopen,其中curl最简单,于是从最简单的说起. 这是简单的将一个变量post到另外一个页面 $url = ''; $d ...
- PHP后台
一.ajax提交表单 先引入ajax.js function ajax(url, fnSucc, fnFaild) { //1.创建Ajax对象 var oAjax=null; if(window.X ...
- Unity4.3.3激活
Unity4.X Win版本的破解方法: <ignore_js_op> 1.安装unity4.X,一路按提示下一步,要断网,直到激活运行软件后再联网2.将Unity 4.x Pro Pat ...
- 如何使用 PagedList.Mvc 分页
刚开始找PagedList分页不是例子太复杂,就是写的过于简略,由于对于MVC的分页不太了解,之前使用的都是Asp.Net 第三方控件 + 数据库存储过程分页.还是老外写的例子简捷,https://g ...
- PAT 06-1 简单计算器
想看一般简单计算器实现的看客不好意思了,这不是你想要点东西,此处题设为“只能进行加减乘除”.“都是整数”.”优先级相同“和"从左到右".此题来自PAT(http://www.pat ...