自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

北海村夫的博客

技术小白成长之路

  • 博客(30)
  • 收藏
  • 关注

原创 Proteus 12V to 5V buck电路仿真练习及遇到的一些问题汇总

Proteus buck电路仿真

2024-03-31 19:16:18 890

原创 【WB32库开发】第18章 定时器计数中断与独立看门狗(IWDG)应用

第九章到第十二章讲解了TIM定时器的几种高级用法,今天讲解WB32的TIM定时器的初级用法——定时器计数中断;另外,由于最近做项目用到看门狗,也在这里简单讲解下独立看门狗(IWDG)及其使用方法。18.1 定时器计数中断18.1.1 定时器计数中断的用途定时器计数中断可以比喻为:18.2 独立看门狗...

2022-04-28 14:36:56 764 2

原创 【WB32库开发】第17章 (三)低功耗电源控制——待机模式

本节使用固件库例程PWR中的PWR_STANDBY工程,讲解如何配置WB32进入待机模式。17.5 待机模式实验本例程演示如何进入和退出低功耗STANDBY模式:本例程初始点亮LED1,等待一段时间后启用WKUP管脚并进入低功耗STANDBY模式;进入STANDBY模式后,管脚状态丢失,LED1熄灭;然后可以通过按下与WKUP管脚连接的按键或按下复位按键以退出STANDBY模式;退出STANDBY模式程序重头运行,重复上述过程。17.5.1 预处理文件、宏定义与函数声明#include "w

2022-01-21 16:11:23 517 2

原创 【WB32库开发】第17章 (二)低功耗电源控制——停止模式

本节使用固件库例程PWR中的PWR_STOP工程,讲解如何配置WB32进入停止模式。17.3 停止模式实验本例程演示如何进入低功耗STOP模式和通过外部中断退出低功耗STOP模式;本例程执行以下操作:打开HSE,HSE作为PLL的时钟源,PLL倍频到72MHz,PLL时钟作为主时钟。点亮LED1,熄灭LED2。等待一段时间后,配置PA0上升沿中断并进入低功耗STOP模式。此时处于低功耗STOP模式。按下与PA0连接的按键产生EXTI0中断以唤醒芯片。在EXTI0中断中,切换LED2的状态(

2022-01-21 13:50:19 777

原创 【WB32库开发】第17章 (一)低功耗电源控制——睡眠模式

稳定的电源是保证系统稳定运行的基础,但是在实际的项目应用场合中,除了要保证系统稳定运行,对系统的功耗也有极高的要求。例如在一些便携设备上,其自身电源极小,甚至可能仅有一块纽扣电池,却需要维持设备运行数月至数年之久,因此必须引入电源管理来控制功耗,提升设备续航时间。WB32提供了几种电源管理模式,在保障设备系统正常运行外,亦能拥有极佳的功耗。本节课将通过固件库中PWR例程中的PWR_SLEEP工程讲解如何控制WB32进入低功耗睡眠模式。在学习本节内容前务必仔细阅读WB32中文参考手册第六章电源控制(PW

2022-01-21 09:14:40 525

原创 【WB32库开发】第16章 随机数发生器(RNG)

本章学习使用WB32的随机数发生器(RNG),要实现的功能是:通过随机数发生器产生0-250范围的随机数,通过串口打印输出。以固件库例程RNG中的RNG_Example为例。16.1 RNG介绍WB32内部含有一个硬件随机数发生器(RNG),RNG是一个以连续模拟噪声为基础的随机数发生器,使用 24 位 LFSR 产生 8 位随机数给其他模块使用,同时也可以从 APB2 总线读取这个随机数。注意:1)若要读写 RNG 的寄存器,必须先配置 RCC 寄存器来设置 APB2 总线时钟,并且将 RNG

2022-01-20 10:32:25 419

原创 【WB32库开发】第15章 GPIO位带操作

在初级教程中,我们已经学会了使用GPIO标准库函数来控制GPIO;在中级教程中,我们将会学习一种更贴近与控制51单片机GPIO的方法来控制WB32的GPIO。本节课使用WB32固件库中GPIO例程的GPIO_BitBand工程来学习位带操作。15.1 实验任务与代码分析...

2022-01-19 13:18:45 731

原创 【WB32库开发】第14章 (下) ADC电压采集——多通道采集综合例程

本章在上一节内容基础上,对例程代码进行改写,完成DMA读取ADC多通道电压的实验;同时,再将代码进行封装,方便大家学习;本节所需例程在上节末尾已经提供,请按要求将下载好的例程解压到对应文件夹中;14.8 实验任务与代码分析...

2022-01-12 13:02:33 1094

原创 【WB32库开发】第14章 (中) ADC电压采集——多通道采集

上节课学习的ADC电压采集仅使用了16个ADC通道中的其中一个来采集电压,效率相对来说较慢。本节将结合上一章学习的DMA来进行多通道的ADC电压采集,使用这种方法可以提高ADC采集的效率。本节以固件库例程ADC中的ADC_DMA为例,讲解如何配置ADC与DMA,使之完成多通道采集的实验(注意,例程中只给出单通道采集,笔者改编为多通道)。14.5 ADC多通道电压采集分析本节例程有四个需要注意的点:1)初始化ADC GPIO(同时配置DMA的时钟);2)初始化ADC工作参数;3)配置DMA工作参

2022-01-11 16:50:17 1368

原创 【WB32库开发】第14章 (上) ADC电压采集——单通道采集

14.1 认识WB32的ADCWB32有1个ADC,精度为12位,这个ADC有16个外部通道,分别对应着16个不同的IO口,具体可见WB32数据手册中管脚功能描述表。ADC的输入电压范围为0-3.3V,若输入的电压过高或过低,可以设计一个外部调理电路,把需要转换的输入电压降低或升高到0-3.3V,这样WB32的ADC就可以测量了。确定好输入电压后,即可通过输入通道检测输入电压了,但我们还需注意这16个外部通道在转换时还分为规则通道和注入通道;规则通道为我们常用的通道,而注入通道是一种在规则通道转换时

2022-01-10 13:37:44 1836

原创 【WB32库开发】第13章(下)DMA直接存储器访问——存储器到外设例程优化

上节使用的例程最后的实验结果不太理想,没有将我们想要的内容打印出来,那么本节课,我们就在上节使用的例程上进行优化。为了保证学习效率,在上节课中笔者已经给出了本节内容要使用的代码,务必在学习完上一章内容后再进行本章内容的学习。13.6 实验任务分析本次实验的主要任务是通过DMAC实现存储器到外设的数据传输,但DMAC_MemoryToUart例程实验结果不太理想,因此需要重新设计程序,使之能够通过串口将内存中存取的数据打印出来。且上节例程的格式过于臃肿,本节例程将为大家展示如何封装函数,并在主函数中调

2022-01-07 09:29:00 328

原创 【WB32库开发】第13章(中)DMA直接存储器访问——存储器到外设

上一节中我们简单讲了DMA中的存储器到存储器例程,本节讲解如何配置DMA从存储器到外设的数据传输。WB32的外设有很多,但涉及到DMA从存储器到外设的数据传输,一般指使用串口这个外设。本节我们就通过固件库例程DMAC中的DMAC_MemoryToUart工程,来讲解如何配置DMA从存储器到串口传输数据。13.4 DMA从存储器到串口的数据传输的配置本节使用代码的主要功能是将定义的字符数组中的字符串传输到串口的输出寄存器中。我们先对13.4 预处理代码及宏定义代码分析...

2022-01-06 15:01:06 2551

原创 【WB32库开发】第13章(上)DMA直接存储器访问——存储器到存储器

DMA(Direct Memory Acess),中文译为直接存储器访问。主要用来在不占用CPU的情况下提供在外设和外设之间、外设和存储器之间或者存储器和存储器之间的高速数据传输,可以节约CPU的资源做其它操作。WB32F10xxx 有两个完全相同的 DMA 控制器 DMAC1 和 DMAC2。每个 DMA 控制器有 3 个通道(一共有 6 个通道),每个通道可以单独配置,管理各种类型 DMA 传输。每个 DMAC 内还有一个仲裁器来协调各个 DMA 请求的优先权。...

2022-01-05 13:41:24 1141

原创 【WB32库开发】第12章(下)PWM输入捕获——综合应用

上一节提到本节将使用使用高级定时器TIM1来捕获TIM2输出的PWM,并将此PWM信息通过串口打印出来。12.6 配置通用定时器TIM2输出PWM配置通用定时器TIM2输出PWM与配置高级定时器TIM1类似,我们需要注意的是根据WB32F10x数据表找到TIM2的输出通道对应的引脚即可。本次设置TIM2通道1输出的PWM频率为2KHz,占空比为25%,为了方便将TIM2输出PWM的全部配置写在一个函数里:void TIM2_PWMOutConfig(void){ TIM_OCInitTypeDe

2021-12-31 16:47:45 2444

原创 【WB32库开发】第12章(中)PWM输入捕获——串口打印数据

上节我们讲述了如何配置TIM的PWM输入捕获功能,本节内容将与串口内容结合,将捕获到的信息通过上位机显示出来。12.3 串口配置12.3.1 串口基础配置我们在第八章的内容中已经讲过串口是如何配置和使用的。那么如何将串口相关程序移植到我们本章的例程中呢?1)按照下图中的目录将Retarget_uart1.c文件复制到本节例程的目录下。2)将Retarget_uart1.c添加到工程目录下:3)编译后无错误即可在主函数中配置UART结构体,这里给出我添加UART功能后的整体代码,新添加

2021-12-31 14:07:37 1042

原创 【WB32库开发】第12章(上)TIM1高级定时器——PWM输入捕获

本章要学习的PWM输入捕获是定时器又一重要应用,使用PWM输入捕获可以测量输入PWM的频率和占空比。PWM输入只能使用定时器的两个通道:通道1和通道2,且一路PWM输入要占用两个捕获寄存器,一个用于捕获周期,一个用于捕获占空比。本章我们使用固件库例程中的“TIM_PWM_Input”工程,来为大家讲解如何配置TIM完成PWM输入捕获的功能。12.1 PWM输入捕获配置12.1.1 开启对应端口和功能时钟本例程主要使用到GPIOA Pin8的复用功能TIM_ CH1,因此需要使能GPIOA、AFIO

2021-12-31 10:55:20 1675 1

原创 【WB32库开发】第11章 PWM互补输出——死区时间计算

本章内容意在简单的补充第十章PWM互补输出实验中的高级定时器死区时间设定部分。11.1 死区发生器设置配置PWM互补输出的死区时间,本质上就是在配置TIM1高级控制定时器的刹车和死区寄存器(TIMx_BDTR)中的DTG[7:0](死区发生器设置)部分。在WB32参考手册中找到该部分:看不懂的不必纠结,先介绍一下公式中的各个变量代表的含义:1)DT:死区持续时间(DT=步长值×步长时间)。2)T-DTS:系统时钟周期时长。例:WB32F103CBT6的系统时钟频率为72M,则T-DTS =

2021-12-30 14:02:45 5474 1

原创 【WB32库开发】第10章 TIM1高级定时器——PWM互补输出

在上一章的输出多路PWM的基础上,本章主要讲述如何配置WB32上的高级定时器TIM1完成PWM互补输出。对PWM互补输出的概括放到10.3节中,请大家先跟随10.1节了解函数配置,再结合10.2节实验现象对10.3节进行参照,相信大家对PWM互补输出会有一个更清晰的认知。本章节我们需要使用到固件库例程中TIM_ComplementarySignals工程,来讲解如何配置TIM1来完成PWM互补输出,需要注意PWM互补输出只能使用高级定时器来配置。10.1 高级定时器PWM互补输出配置本例程中我们使用

2021-12-29 12:36:24 5043

原创 【WB32库开发】第9章 TIM1高级定时器——输出多路PWM

PWM(Pulse Width Modulation)意为脉冲宽度调制,简称脉宽调制 。在工控行业,PWM信号可以用来调节电机转速、调节变频器以及BLDC电机驱动等;在LED照明行业,可以通过PWM来控制LED的亮暗变化;还可以通过PWM信号来控制无源蜂鸣器发出简单的声音等。WB32也可输出PWM,需配置WB32上的定时器。在WB32中有4个定时器,其中TIM1为高级定时器,TIMx(2-4)为通用定时器,这四个定时器均挂载在APB1总线上,每个定时器都可以输出4路PWM。本章需要使用固件库TIM例程

2021-12-28 10:25:10 3916

原创 【WB32库开发】第8章 UART串口通信之printf重定向

本章讲解一下URAT(Universal Asynchronous Receiver/Transmitter)通用异步收发器的串口打印功能。WB32共有三个UART串口,其中UART1挂载在APB1总线上,UART2和UART3挂载在APB2总线上。UART在WB32中最多的应用就是printf输出调试信息,当我们需要了解程序内一些变量数据信息时,可以通过printf函数将信息打印在串口调试助手上显示,极大的方便我们调试程序。本节课主要通过固件库UART例程中的UART_Printf工程,讲解如何配置U

2021-12-27 14:18:57 1332

原创 【WB32库开发】第7章 外部中断/事件控制器(EXTI)

在上一章中简单介绍了NVIC。大家对中断的管理机制应该有了一定的了解,本章就通过学习WB32F103上的控制器资源来带领大家了解NVIC的实际应用。若对基础知识有一定了解的可从7-5节“固件库例程讲解—配置EXTI”开始看起。7.1 EXTI简介EXTI,全称External interrupt /event controller,即外部中断/事件控制器,包含多达 19 个用于产生事件/中断请求的边沿检测器。每根输入线都可单独进行配置,以选择类型(中断或事件)和相应的触发事件(上升沿触发、下降沿触发

2021-12-24 19:01:35 5153

原创 【WB32库开发】第6章 中断概述(NVIC)

WB32的每一个外设都可以产生中断,所以我们先在此做一个概括性的介绍,其他章节中如若涉及到此部分内容就不再过多赘述。本章中如无特殊说明,中断就是异常,异常就是中断,两者的作用大致相同。6.1NVIC简介NVIC全称Nested Vectored Interrupt Controller,即嵌套向量中断控制器,控制着整个WB32芯片中断相关的功能,可以实现低延迟的中断处理和晚到中断的高效处理。包括内核异常在内的所有中断均通过 NVIC 进行管理。通常,芯片厂商在设计制造芯片时会将Cortex-M3内核

2021-12-24 13:11:10 904

原创 【WB32库开发】第5章 SysTick——系统定时器

“SysTick定时器也叫SysTick滴答定时器,它是Cortex-M3内核的一个外设,被嵌入在NVIC中,它是一个24位向下递减的定时器每计数一次所需时间为1/SYSTICK,SYSTICK是系统定时器时钟,一般设置系统时钟为芯片的主频时钟,亦可设置为系统时钟的8分频(WB32的主频时钟为96MHz)。SysTick定时器通常应用在操作系统中,为其提供时钟周期。”本章节主要目的就一个,学会使用SysTick实现us与ms的精准延时代替不精确的软件延时(对实现原理感兴趣的期待后续教程)。为此设计一个实

2021-12-13 16:08:32 2358

原创 【WB32库开发】第4章 GPIO的输出与输入(下)

在进入本章内容之前,我们先回顾一下前两节提出的一些问题:1)如何找到固件库自带函数位置?2)#include 的作用是什么?3)将函数模块化的优与劣。如果你已经完成了前两节的例程,那么就带着疑问与笔者一起走进这一节的内容吧。4.5按键检测点亮LED例程详解4.5.1工程主体构成在这里我们可以看到工程目录下有五个文件夹,这里简单介绍一下其中内容与作用,想要更深入了解的同学也不要心急,跟着后续教程学习你的水平必然水涨船高。我们还需要知道三件事:第一,是用C语言编写程序时,编写的内容被储存在文

2021-12-09 17:30:00 3383 2

原创 【WB32库开发】第4章 GPIO的输出与输入(中)

上节课我们实现了GPIO的输出功能,还记得我们在文章最后给出的小作业么?相信有的朋友已经尝试了一下,但仍然有不理解,那么就让我们一起在本章的内容中再次学习一下吧。4.3 按键检测点亮LED灯硬件设计由于核心开发板上配置外设有限,我们将借助一个简单的按键硬件电路来实现本节内容。需要准备的器件有若干杜邦线、面包板和按键。将按键按对角线分别连接在3.3V与PB12上。实际连接图如下。4.4按键检测点亮LED灯软件设计4.4.1编程要点1)移植LED函数。2)编写按键检测函数,检测对应GPIO端

2021-12-07 18:30:00 475 1

原创 【WB32库开发】第4章 GPIO的输出与输入(上)

上一节介绍了如何创建一个空白的库函数工程模板,那么本章,笔者通过使用固件库在WB32开发板上点亮LED灯,让大家走进WB32固件库开发的世界。本章内容重在教会初学者快速上手WB32固件库开发,其中部分原理细节不过多探究,只要大家能够根据教程循序渐进的学习,那么掌握WB32固件库开发并根据基础教程开发项目也就信手拈来了。4.1使用固件库点亮LED硬件设计在本章教程中,我们要点亮开发板上的LED灯。从WB32最小系统原理图中,可以看到上方的LED正极接在3.3V供电上,负极连接GND,单片机上电后即可

2021-12-06 17:55:20 2238 1

原创 【WB32库开发】第3章 配置Keil下WB32开发环境

安装好Keil MDK后,此时Keil MDK还不能对WB32进行开发,此时需要我们配置Keil下WB32的开发环境。(注:本章内容主要根据《WB32F10x开发入门V1.1 》与编者自己的WB32学习经验编写,《WB32F10x开发入门V1.1 》下载链接将与本章其他资源共同放在文末,供有需要的朋友下载查阅)3.1固件库介绍库是开发工程的基石,了解标准库结构可以为你的编程之路打开方便之门,首先准备好WB32F10x的固件库文件压缩包(下载链接在文末)。解压后,下图所示即为WBF10x标准库的目录

2021-11-29 16:36:01 1166

原创 【WB32库开发】第2章 如何安装Keil5

2.1获取Keil安装包2.1.1官网下载安装包WB32与STM32一样,都可使用MDK进行开发。笔者由于经常遇到在网上下载来的软件带有病毒或者捆绑包的情况,所以选择官网下载。这里给出官网地址自行下载:https://www.keil.com/download/product/进入官网产品下载页面后,点击MDK—Arm。根据提示填写完基础信息后,点击Submit。进入此页后,点击MDK536.EXE即可下载程序到电脑上,下载完成后即可安装程序。2.1.2网盘下载安装包这里提供笔者在官

2021-11-29 11:14:44 294

原创 【WB32库开发】第1章 认识WB32

第1章 认识WB321.1 什么是WB32WB32,是由WestBerry(韦斯佰瑞)Technology公司设计开发的基于Cortex-M3内核的32位微控制芯片。在目前嵌入式产业火热,主流产品如STM32系列普遍大规模缺货、涨价的情况下,WB32系列芯片能够为在校学生创新设计提供更实惠的开发板,为创业者的产品提供质优价廉的稳定货源,为国内32位芯片需求注入新的活力。1.2 WB32的命名方法与选型以笔者学习时使用的WB32最小系统开发板用的型号WB32F103CBT6来讲解,见表1-1。

2021-11-26 16:52:48 1966

原创 Proteus7.x MASM32编译器

关于Proteus7.x版本的MASM32编译器问题*在我通过Proteus学习微机原理与接口技术(8086)的过程中遇到了一个小麻烦,就是在8.x版本当中编译器是可以通过软体自带下载器下载的,而在使用7.x版本时就会发现根本找不到MASM32编译器,这让我在学习初期就遇到很大的阻力。在网上多方寻找关于MASM32编译器的资料,所得的结果也都不太符合我的需求,现在直接打包发布MASM32编译器...

2019-06-20 16:39:39 3652 6

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除