nrf51822裸机教程-PWM】的更多相关文章

先简单介绍一下PWM的原理. 原理很简单. 假设COUNTER是个从0开始递增的计数器.  我们设置两个值 counter0 和counter1 在 COUNTER 计数到counter0的值时候翻转输出的电平,然后COUNTER继续计数,在计数到counter1的值的时候再翻转输出电平. 同时清零COUNTER计数器.让其从0开始重新计数,这样就可以产生一个方波. 从上面的图可以看出这个方波的一个周期T的时间是由 counter1来决定的.所以周期的调节就是通过counter1的值来调节. …
关于IIC总线的核心有以下几点: :时钟线高电平期间必须保持数据线不变. :时钟线低电平期间可以改变数据. :时钟线和数据线上都要接上拉电阻,以使总线不工作时,两根线的电平都处于高电平状态. :每个传输的字节后面需要由对方回送一个应答信号. 由上面可知,在时钟线为高电平的时候如果数据线改变,那么就是”不合法” 的.于是就刚好利用这种”不合法的”的跳变来作为数据 起始信号和停止信号. 于是规定: :时钟线为高电平时,数据线由高到低跳变为起始信号 :时钟线为高电平时,数据线有低到高跳变为 停止信号.…
art硬件模块通常都有内置的硬件接收buff,比如51822的硬件uart模块图如下 因为通常接收到uart数据时都会做一些处理.比如保存到数据,或者对数据做一些判断之类的. 如果uart的波特率设置的很快,mcu的处理速度又不是很快或者是处理的过程比较耗时,那么当uart串口连续过来很多数据时,你在处理第一个数据时,后续的数据就可能丢失.所以通常uart模块都会内置一个很小的硬件接收buff,51822就内置了一个6字节的硬件接收buff.这样就能起到缓存作用. Uart一般有两种工作方式  …
RTC0被协议栈使用了.所以在跑蓝牙程序的情况下.RTC0不能使用. RTC相关寄存器如下: EVTEN,EVTENSET,EVTENCLR. 这三个寄存器用来设置是否使能某个事件.(TICK,OVRFLW,COMPARE0-3 事件) INTEN,INTENSET,INTENCLR. 这三个寄存器用来设置某个事件发生时是否触发RTC中断. PRESCALER 该寄存器用来设置RTC的时钟分频 分频公式:fRTC [kHz] = 32.768 / (PRESCALER + 1 )       …
Programmable Peripheral Interconnect即可编程外设互联 系统,该模块是51822 提供的一个特性. 目的是为了让51822 的外围模块可以不通过处理器而自动相互作用. 工作原理很简单. 可以将PPI看做是一通道. 该通道有两个端点,一个叫event end-point,另一个为task end-point. 通过将具体的 event寄存器和 task寄存器 分别赋值到 ppi通道的event end-point和task end-point中. 那么当 even…
GPIO通常都会具有中断功能,上一讲的GPIO中并没有涉及到中断的相关寄存器. 51822将GPIO的中断相关做成了一个单独的模块GPIOTE,这个模块不仅提供了GPIO的中断功能,同时提供了 通过task和event的方式来访问GPIO的功能.其实中断功能也是通过 event来使能的,即中断是通过设置寄存器中相关位来决定  当event发生时是否发生中断 来设置中断功能的,具体下面介绍寄存器就明白了. (task和event的引入主要是为了和51822中的PPI(可编程外围设备互联系统)模块的…
关于SPI总线的介绍这里就不细说了,网上有很多介绍SPI总线时序的. SPI总线的本质就是一个环形总线结构,在时钟驱动下两个双向移位寄存器进行数据交换. 所以SPI总线的特色就是:传输一字节数据的同时也会接收到一字节数据.支持SPI操作的芯片通常都会有一个CS引脚作为片选信号,所以总线上可以挂多个支持SPI操作的芯片,每次想对哪个操作就直接使能那个芯片就可以了. 对比于IIC总线,IIC总是在一个时钟周期内传输一个bit, IIC总线总是在每个时钟周期的高电平部分采样数据. 而SPI的特点是在时…
该讲介绍51822的Timer/Counter模块工作在timer模式下(定时器模式,还可以工作为计数器模式) 如何操作 51822的Timer/Counter结构如下图所示 Timer模块从PCLK16M/PCLK1M 处获得时钟源,然后经分频后得到的时钟作为timer模块的时钟 ( 上图Ftimer).当timer模块选择为timer模式时,Counter会在Ftimer的每个tick 计数一次当计数值与cc[n](n为0,1,2,3)寄存器中的值相等时就会触发对应的Compare[n]事件…
首先看看一下相关的寄存器说明 Out寄存器 输出设置寄存器 每个比特按顺序对应每个引脚,bit0对应的就是 引脚0 该寄存器用来设置 引脚作为输出的时候的 输出电平为高还是低. 与输出设置相关的 还有另外两个寄存器 OUTSET和OUTCLR OUTSET用来设置某个引脚的输出为高电平 OUTCLR用来设置某个引脚的输出为低电平 这两个寄存器同OUT寄存器一样 每个位按顺序对应每个引脚.但有个特别的地方在于OUTSET和OUTCLR两个寄存器的每个bit都是写1有效,写0无效. 比如在引脚都被设…
本文隶属于AVR单片机教程系列.   PWM 两位数码管的驱动方式是动态扫描,每一位都只有50%的时间是亮的,我们称这个数值为其占空比.让引脚输出高电平点亮LED,占空比就是100%. 在驱动数码管时,我们迫不得已使占空比为50%,因为不能让两位真正同时地显示不同的数字.但是,我们也可以有意地让LED的占空比不到100%,以降低其亮度. 占空比是可以用程序来调节的.下面的程序允许用户用按键调整蓝色LED的占空比,并通过数码管来显示. #include <ee1/ee.h> #define DU…
本文转载自:https://blog.csdn.net/zqixiao_09/article/details/50858776 版权声明:本文为博主原创文章,未经博主允许不得转载.    https://blog.csdn.net/zqixiao_09/article/details/50858776       编写驱动的第一步仍是看原理图: 可以看到,该蜂鸣器由 GPD0_0 来控制 ,查手册可知该I/O口由Time0 来控制,找到相应的寄存器: a -- I/O口寄存器及地址 GPD0CO…
1 平台框架简介 微信蓝牙BLE由三个模块组成,分别是蓝牙设备.微信和第三方服务器,如下图: 蓝牙设备与微信之间的通信是通过蓝牙GATT协议进行. 微信与第三方服器之间的通信是通过网络http 接口进行. 调试流程: 2蓝牙BLE固件调试 2.1 需要的资料和工具 <微信蓝牙外设协议> 微信蓝牙协议调试工具AirSyncDebugger <微信蓝牙计步Profile协议> Nordic nRF51822接入教程芯片源代码v0.2 以上资料都可以在下面网址下载:http://iot.…
做实验时我们是把 bin 文件烧入SD卡,比如前面做的汇编流水灯实验. 问:是谁把这些指令从 SD 卡读出来执行? 答:是固化在芯片内部ROM上的代码---它被称为iROM ,iROM是厂家事先烧写在芯片上的,无源码. iROM把启动设备上特定位置处的程序读入片内存 (iRAM) ,并执行它.这个程序被称为 BL1(Bootloader 1) ,BL1 是三星公司提供的,无源码. BL1又把启动设备上另一个特定位置处的程序读入片内内存,并执行它.这个被称为 BL2(Bootloader 2) ,…
linux 设备驱动概述 目前,Linux软件工程师大致可分为两个层次: (1)Linux应用软件工程师(Application Software Engineer):       主要利用C库函数和Linux API进行应用软件的编写: 从事这方面的开发工作,主要需要学习:符合linux posix标准的API函数及系统调用,linux的多任务编程技巧:多进程.多线程.进程间通信.多任务之间的同步互斥等,嵌入式数据库的学习,UI编程:QT.miniGUI等. (2)Linux固件工程师(Fir…
1.典型嵌入式linux系统启动过程: 嵌入式系统上电后先执行uboot.然后uboot负责初始化DDR,初始化Flash,然后将OS从Flash中读取到DDR中,然后启动OS(OS启动后uboot就无用了) 2.uboot必须解决哪些问题 1.自身可开机直接启动(1)一般的SoC都支持多种启动方式,譬如SD卡启动.NorFlash启动.NandFlash启动等·····uboot要能够开机启动,必须根据具体的SoC的启动设计来设计uboot(2)uboot必须进行和硬件相对应的代码级别的更改和…
1.什么是LCD? (1)LCD(Liquid Crystal Display)俗称液晶.(2)液晶是一种材料,液晶这种材料具有一种特点:可以在电信号的驱动下液晶分子进行旋转,旋转时会影响透光性,因此我们可以在整个液晶面板后面用白光照(称为背光),可以通过不同电信号让液晶分子进行选择性的透光,此时在液晶面板前面看到的就是各种各样不同的颜色,这就是LCD显示.(3)被动发光和主动发光.有些显示器(譬如LED显示器.CRT显示器)自己本身会发光称为主动发光,有些(LCD)本身不会发光只会透光,需要背…
1.为什么要有uboot 1.1.计算机系统的主要部件 (1)计算机系统就是以CPU为核心来运行的系统.典型的计算机系统有:PC机(台式机+笔记本).嵌入式设备(手机.平板电脑.游戏机).单片机(家用电器像电饭锅.空调) (2)计算机系统的组成部件非常多,不同的计算机系统组成部件也不同.但是所有的计算机系统运行时需要的主要核心部件都是3个东西: CPU + 外部存储器(Flash/硬盘) + 内部存储器(DDR SDRAM/SDRAM/SRAM) 1.2.PC机的启动过程 (1)部署:典型的PC…
本文介绍一种Cortex-M内核中的精确延时方法 前言 为什么要学习这种延时的方法? 很多时候我们跑操作系统,就一般会占用一个硬件定时器--SysTick,而我们一般操作系统的时钟节拍一般是设置100-1000HZ,也就是1ms--10ms产生一次中断.很多裸机教程使用延时函数又是基于SysTick的,这样一来又难免产生冲突. 很多人会说,不是还有定时器吗,定时器的计时是超级精确的.这点我不否认,但是假设,如果一个系统,总是进入定时器中断(10us一次/1us一次/0.5us一次),那整个系统就…
ref:http://www.elecfans.com/d/617674.html     为什么要有uboot 1.1.计算机系统的主要部件 (1)计算机系统就是以CPU为核心来运行的系统. 典型的计算机系统有: PC机(台式机+笔记本) 嵌入式设备(手机.平板电脑.游戏机) 单片机(家用电器像电饭锅.空调) (2)计算机系统的组成部件非常多,不同的计算机系统组成部件也不同.但是所有的计算机系统运行时需要的主要核心部件都是3个东西: CPU + 外部存储器(Flash/硬盘) + 内部存储器(…
uboot下的命令行 1.典型嵌入式linux系统启动过程: 嵌入式系统上电后先执行uboot.然后uboot负责初始化DDR,初始化Flash,然后将OS从Flash中读取到DDR中,然后启动OS(OS启动后uboot就无用了) 2.uboot必须解决哪些问题 1.自身可开机直接启动(1)一般的SoC都支持多种启动方式,譬如SD卡启动.NorFlash启动.NandFlash启动等·····uboot要能够开机启动,必须根据具体的SoC的启动设计来设计uboot(2)uboot必须进行和硬件相…
一.PWM概述: PWM(Pulse Width Modulation):脉冲宽度调制技术,通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形. PWM 的几个基本概念: 1) 占空比:占空比是指在一个周期内,信号处于高电平的时间占整个信号周期的百分比,方波的占空比是50%. 2) 调制频率:周期的倒数. 3) 脉冲宽度:信号处于高电平的时间. 二.nRF51822的PWM产生: NRF51822 通过Timer.PPI 和GPIOTE 的配合实现PWM 的功能,由Timer 产生一个事件,…
本文根据一周CC2541笔记汇总得来—— 适合概览和知识快速索引—— 全部链接: 中级教程-OSAL操作系统\OSAL操作系统-实验01 OSAL初探 [插入]SourceInsight-工程建立方法 中级教程-OSAL操作系统(OSAL系统解基本套路) 中级教程-OSAL操作系统(进一步了解-OLED && 普通按键和5方向按键-中断!!!)这个系统驱动层和应用层不一样~ 中级教程-OSAL操作系统(ADC-光敏电阻) OSAL操作系统-实验16 串口波特率扩展 OSAL操作系统-实验1…
第7章        RL-TCPnet网络协议栈移植(裸机) 本章教程为大家讲解RL-TCPnet网络协议栈的裸机移植方式,学习了上个章节讲解的底层驱动接口函数之后,移植就比较容易了,主要是添加库文件.配置文件和驱动文件即可. 本章教程含STM32F407开发板和STM32F429开发板的移植. 7.1  移植前准备工作说明 7.2  STM32F407移植RL-TCPnet协议栈 7.3  STM32F429移植RL-TCPnet协议栈 7.4  总结 7.1  移植前准备工作说明 1.学习…
S5P4418裸机系列教程之stdio S5P4418裸机系列教程之shell命令行 S5P4418裸机系列教程之串口回显 S5P4418裸机系列教程之复位測试 S5P4418裸机系列教程之led跑马灯 S5P4418裸机系列教程之按键查询方式并控制蜂鸣器 S5P4418裸机系列教程之按键查询方式 S5P4418裸机系列教程之按键中断測试 S5P4418裸机系列教程之显示3D-texobj S5P4418裸机系列教程之显示3D-gear S5P4418裸机系列教程之显示3D-CUBE S5P44…
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第34章       STM32H7的定时器应用之TIM1-TIM17的PWM实现 本章教程为大家讲解定时器应用之TIM1 – TIM17所有定时器的PWM实现.实际项目中用到的地方较多,如电机控制.无源蜂鸣器.显示屏背光等场合. 34.1 初学者重要提示 34.2 定时器PWM驱动设计 34.3 定时器板级支持包(bsp_tim_pwm.c) 34.4 定时器驱动移…
忙了一阵这个PWM,玩着玩着终于发现了些规律.Nordic 也挺会坑爹的. nRF51822 是没有硬件 PWM 的,只能靠一系列难以理解的 PPI /GPIOTE/TIMER来实现,其实我想说,我醉了. 幸好SDK有这个的demo,不然真的很醉.这里说的是SDK9.0.0. 即便是有SDK,相信很多人都像我一样,看下去会觉得晕头转向的,不过知道几个函数的应用就可以了. 先记下怎么开始用一个PWM.这里我要用2路极性相反的PWM. 先来初始化两个个PWM实例,名字是PWM1.PWM2,用硬件Ti…
原文http://blog.chinaunix.net/uid-14114479-id-3125685.html ARM驱动蜂鸣器的方式有两种:一种是PWM输出口直接驱动,另一种是利用IO定时翻转电平产生驱动波形对蜂鸣器进行驱动.PWM输出口直接驱动是利用PWM输出口本身可以输出一定的方波来进行驱动.在ARM中可以用几个特殊功能寄存器对占空比和周期进行设置.通过设置这些寄存器产生符合蜂鸣器要求的方波后,这个时候利用这个方波就可以对蜂鸣器进行驱动了.使用PWM时,通过TCMPn可以决定脉宽,TCN…
低功耗蓝牙4.0是全新的技术,并不向下兼容,也就是说它和蓝牙3.0.2.0什么的都不能通信的.另外,蓝牙4.0目前的规范只能做外设和主机(智能手机,电脑等)通讯,也就是说你想用一个单模的蓝牙4.0开发板和另一个单模的蓝牙4.0开发板通过蓝牙的方式通信是不行的(什么是单模请看附件的背景介绍).这个问题有两个解决办法,一是不走蓝牙协议就用普通的2.4Ghz通讯(类似nRF24系列),二是等待厂家的蓝牙4.1规范协议栈升级(只需重新烧入软件). 好了,开讲第一课.nRF51822 AK II开发板的开…
我们的开源宗旨:自由 协调 开放 合作 共享 拥抱开源,丰富国内开源生态,开展多人运动,欢迎加入我们哈~ 和一群志同道合的人,做自己所热爱的事! 项目开源地址:https://github.com/J20RC/STM32_RC_Transmitter 码云(Gitee)地址:https://gitee.com/J20RC QQ交流群:1091996634 [密码:J20] 1.打印PCB 从GitHub下载STM32F0接收机的PCB文件,下载地址: https://github.com/J20…
蓝牙在短距离无线通信领域占据举足轻重的地位—— 从手机.平板.PC到车载设备, 到耳机.游戏手柄.音响.电视, 再到手环.电子秤.智能医疗器械(血糖仪.数字血压计.血气计.数字脉搏/心率监视器.数字体温计.耳温枪.皮肤水分计等), 再到智能家居等领域均占有一席之地. 而蓝牙低功耗(BLE)是在蓝牙4.0协议上修改以适用低功耗应用场景的一种蓝牙协议. 随着上一股智能消费类电子大潮的到来,BLE的各种应用也像雨后春笋般在市场上铺开. 如果想 紧跟蓝牙协议的最新动态 ,可以在https://www.b…