CW32F030CxTx StartKit评测
认识CW32F030CxTx StartKit
1、CW32F030C8T6是一款以ARM Cortex-M0+为内核的微处理器,最高主频为64MHz,采用LQFP48封装,64K字节FLASH,8K字节RAM。
2、板载3颗LED灯,分别为:用户指示灯LED1、LED2以及电源指示灯LED3。
3、板载3个轻触开关,分别为:用户轻触开关S1、S2以及系统复位轻触开关S3。
4、板载USB转串口芯片(CH340N),用户可直接使用串口通讯。
5、板载FLASH芯片(W25Q64JVSSIQ),可实现SPI通讯。
6、板载EEPROM芯片(CW24C02AD),可实现IIC通讯。
7、板载接口包括:1、Mini USB接口;2、下载器调试接口;3、GPIO全部引出。
8、多种供电方式:1、USB VBUS供电;2、3.3V供电(LD1117AS33TR);3、外接1.65V~5.5V供电。-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
入门指南
按照下列步骤配置CW32F030CxTx StartKit:
1、确认跳线帽的位置,如下表所示。2、确保调试接口与开发板正确连接。3、给评估板上电,使用USB连接至CN1。4、红色LED3电亮(系统电源指示灯),绿色LED1和LED2交替闪烁。5、按下S1按键,可观察到LED1闪烁,LED2熄灭。6、按下S2按键,客观擦到LED2闪烁,LED1熄灭。
跳帽
| 定义
| 位置
| 功能
| J24[1-2]
| VDDLDO
| ON
| 使用VDDLDO降压后的电源给系统供电
| J23
| | ON
| 短接不进行系统电流测量
| J22
| | ON
| 短接不进行系统电流测量
| J21
| | ON
| 短接不进行系统电流测量
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
原理图详解
POWER:
首先我们得了解一下该芯片的供电电压范围,通过看数据手册可知,CW32F030C8T6的供电电压范围为:1.65V至5.5V,是一个宽电压供电芯片,因此我们可以通过5V直接供电,或者再经给LDO降压成3.3V再供电都可以,因此我们来看看官方Demo板是如何进行供电的。
可以从原理图看到的是:系统供电的方式有三种:1、DCIN,也就是外部输入1.65V至5.5V区间范围内的电压进行供电;2、VDDUSB,也就是使用Mini USB进行供电,此时供电电压为+5V;3、VDDLDO,也就是将Mini USB输入的+5V电压经过LDO降压成+3.3V后再为系统供电,此时供电电压为+3.3V.实物硬件电路图如下所示。
开发板默认情况下采用VDDLDO供电,也就是系统供电电压为+3.3V,与此同时,系统跳帽J23、J21、J22均已连接。可通过测试针T3和T5进行电压检测。
在保持默认情况下时,系统电压*VDDIN为+3.3V、VDD为+3.3V、VDDA为+3.3V。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
滤波
C1-C2-C3-C4是给VDD芯片电压滤波,C9是给VDDA数字电源滤波;
C10-C11-C12-C15分别是给PB0-PA0-PA5-PB11滤波的,如果需要用到则使用0Ω电阻焊接JP9-JP10-JP11-JP12即可。
值得说明的是:
在进行ADC采样时,可将JP9、JP10、JP11、JP12电阻位焊接0Ω电阻,可对采样信号进行滤波。在使用GPIO其他功能时,需断开JP9、JP10、JP11、JP12连接的0Ω电阻。
硬件实物图如下
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
MCU
所有IO均使用排针引出。
晶振部分的有关说明:CW32F030CxTx StartKit 评估板已焊接16MHz 高速晶振与 32.768KHz 低速晶振。默认连接至 GPIO,下表介绍了使用不同的电阻焊接方式进行晶振接口与普通 GPIO 的切换。
电阻JPx焊接方式
| 功能
| 电阻JP2 JP3 ON,JP1 JP4 OFF
| PC14 PC15连接低速晶振
| 电阻JP2 JP3 OFF,JP1 JP4 ON
| PC14 PC15作用普通GPIO
| 电阻JP6 JP7 ON,JP5 JP8 OFF
| PF00 PF01连接高速晶振
| 电阻JP6 JP7 OFF,JP5 JP8 ON
| PF00 PF01作为普通GPIO
| 硬件实物电路图如下所示:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
FLASH_AND_EEPROM
值得注意的是:W25Q64JVSSIQ以及CW24C02AD分别连接至排针口CN10和CN11,用户可通过排针将该引脚连接至所需的IO口。
1、CW32F030CxTxStartKit评估板已焊接W25Q64JVSSIQFLASH芯片,用户可使用CN10排针配置W25Q64工作电压,SPI_NCS引脚,SPI_MISO引脚,SPI_MOSI引脚,SPI_SCK引脚。2、CW32F030CxTxStartKit评估板已焊接CW24C02ADEEPROM芯片,用户可使用CN11排针配置CW24C02AD工作电压,SDA引脚,SCL引脚。
硬件实物电路图如下所示:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DBG&PROGRAMMER
也就是下载调试端口,硬件实物电路图如下所示:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
USB_TO_UART
该开发板板载了CH340N,也就是意味着我们只需要插入Mini USB即可实现电脑和开发板的数据通讯功能。
CW32F030CxTx StartKit 评估板已焊接 CH340N USB 转串口芯片,用户可使用 CN9 排针配置 CH340N工作电压,串口发送引脚连接 I/O,串口接收引脚连接 I/O。
下表介绍了 CH340N 为 3.3V 或 5V 工作电压时 (CN9 VDDU 连接不同的电源 ),J5 的连接方式。
CH340N工作电压
| J5连接
| 3.3V
| J5[2-3],跳帽J5的2、3脚相连接
| 5V
| J5[1-2],跳帽J5的1、2脚相连接
| 默认状态下,我们将VDDU与VDD相连接,即系统电压VDDU为3.3V,因此默认状态下J5的引脚2-3应该相连接。
硬件实物电路图如下所示:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
KEY_AND_LED
常用的按键功能,即按键S1(PA1)、按键S2(PA2)。
常用的两颗LED,即LED1(PB9)、LED2(PB8)。
硬件电路实物图如下所示:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
排针接口
将MCU的所有IO口全部引出,硬件实物电路图如下所示。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.新建工程
第一步:新建文件夹
第二步:打开keil文件,新建工程并添加.c和.h文件
第三步:编译工程,发现报错,如下所示
仔细阅读,可以看到这个问题是关于找不到内核M0加头文件。
第四步:解决问题,添加内核文件。
再次编译工程文件!
以上就将一个基本框架建立好了,接下来就是补充MyApplication中的内容。
最后一步就是在main.c文件中进行调用即可。
以上就完成了全部所有的新建工程文件内容!
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.晶振波形
在开始撰写代码前,我们先将晶振的波形进行一个简单的测试输出。而在测试晶振波形之前,我们需要了解以下CW32F030C8T6的时钟知识。
时钟树
从图中可以看到,系统时钟SYSCLK有5个时钟源:
1:外部高速振荡器时钟(HSE)2:外部低速振荡器时钟 (LSE)3:HSI时钟,由内部高速RC振荡器时钟(HSIOSC)经过分频产生4:内部低速RC振荡器时钟(LSI)5:PLL锁相环时钟,由HSE时钟或HSI时钟经锁相环PLL倍频(2~12倍)产生
与此同时我们可以发现:判断晶振是否正常运行,我们可以通过相应的时钟输出引脚,然后连接示波器进行波形频率勘测。
RCC_HCLK_OUT();//输出HCLK时钟,通过引脚PA4进行观测
RCC_PCLK_OUT();//输出HCLK时钟,通过引脚PA3进行观测
RCC_HSE_OUT();//输出HCLK时钟,通过引脚PB2进行观测
RCC_HSI_OUT();//输出HCLK时钟,通过引脚PB0进行观测
RCC_LSE_OUT();//输出HCLK时钟,通过引脚PB12进行观测
RCC_LSI_OUT();//输出HCLK时钟,通过引脚PB11进行观测
RCC_PLL_OUT();//输出HCLK时钟,通过引脚PC13进行观测
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
HSI
这里我们使用内部高速时钟进行波形测试,方便后期正常运行程序。
仅需调用如下函数,并使用示波器监测PA4、PA3、PB0、PC13引脚的输出,可观测程序是否正常启动。
voidRCC_Configuration(void)
{
//第一步 HIS使能并校验
RCC_HSI_Enable(RCC_HSIOSC_DIV6);//48/6=8MHz
//第二步设置HCLK PCLK的分频系数
RCC_HCLKPRS_Config(RCC_HCLK_DIV1);
RCC_PCLKPRS_Config(RCC_PCLK_DIV1);
//第三步使能PLL 并设置PLL倍频到64M
RCC_PLL_Enable(RCC_PLLSOURCE_HSI,8000000,8);//8*8=64MHz
//第四步输出波形进行波形检测
RCC_HCLK_OUT();//输出HCLK时钟,通过引脚PA4进行观测
RCC_PCLK_OUT();//输出HCLK时钟,通过引脚PA3进行观测
RCC_HSE_OUT();//输出HCLK时钟,通过引脚PB2进行观测
RCC_HSI_OUT();//输出HCLK时钟,通过引脚PB0进行观测
RCC_LSE_OUT();//输出HCLK时钟,通过引脚PB12进行观测
RCC_LSI_OUT();//输出HCLK时钟,通过引脚PB11进行观测
RCC_PLL_OUT();//输出HCLK时钟,通过引脚PC13进行观测
//第五步当使用的时钟源HCLK大于24M 小于等于48MHz时,设置FLASH读等待周期为2 cycle//当使用的时钟源HCLK大于48M,设置FLASH读等待周期为3 cycle
__RCC_FLASH_CLK_ENABLE();
FLASH_SetLatency(FLASH_Latency_3);
//第六步时钟切换的PLL
RCC_SysClk_Switch(RCC_SYSCLKSRC_PLL);
RCC_SystemCoreClockUpdate(64000000);}
相应的实验波形如下所示:
HCLK和PCLK的波形:
HSE和HSI波形:
PLL波形:
我们可以发现,跟我们配置的一样,只开启了HSI时钟,且使用锁相环进行倍频。调用以上函数,即可让程序工作在内部高速时钟晶振的基础上。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
HSE
这里我们使用外部高速时钟进行波形测试,方便后期正常运行程序。
仅需调用如下函数,并使用示波器监测PA4、PA3、PB2、PC13引脚的输出,可观测程序是否正常启动。
voidRCC_Configuration(void)
{
//第一步 HSE使能并校验外部晶振为16MHz
RCC_HSE_Enable(RCC_HSE_MODE_OSC,16000000,RCC_HSE_DRIVER_NORMAL,RCC_HSE_FLT_CLOSE);
//第二步设置HCLK PCLK的分频系数
RCC_HCLKPRS_Config(RCC_HCLK_DIV1);
RCC_PCLKPRS_Config(RCC_PCLK_DIV1);
//第三步使能PLL 并设置PLL倍频到64M
RCC_PLL_Enable(RCC_PLLSOURCE_HSECLK,16000000,4);//16*4=64MHz
//第四步输出波形进行波形检测
RCC_HCLK_OUT();//输出HCLK时钟,通过引脚PA4进行观测
RCC_PCLK_OUT();//输出HCLK时钟,通过引脚PA3进行观测
RCC_HSE_OUT();//输出HCLK时钟,通过引脚PB2进行观测
RCC_HSI_OUT();//输出HCLK时钟,通过引脚PB0进行观测
RCC_LSE_OUT();//输出HCLK时钟,通过引脚PB12进行观测
RCC_LSI_OUT();//输出HCLK时钟,通过引脚PB11进行观测
RCC_PLL_OUT();//输出HCLK时钟,通过引脚PC13进行观测
//第五步当使用的时钟源HCLK大于24M 小于等于48MHz时,设置FLASH读等待周期为2 cycle//当使用的时钟源HCLK大于48M,设置FLASH读等待周期为3 cycle
__RCC_FLASH_CLK_ENABLE();
FLASH_SetLatency(FLASH_Latency_3);
//第六步时钟切换的PLL
RCC_SysClk_Switch(RCC_SYSCLKSRC_PLL);
RCC_SystemCoreClockUpdate(64000000);}
相应的实验波形如下所示:
HCLK和PCLK的波形:
HSE和PLL波形:
我们可以发现,跟我们配置的一样,只开启了HSE时钟,且使用锁相环进行倍频。调用以上函数,即可让程序工作在外部高速时钟晶振的基础上。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3.点亮LED
实物硬件图如下所示:我们点亮板载的两颗LED灯,使用外部高速晶振!
可以发现的是:该LED属于高电平点亮、低电平熄灭的状态。
因此本例程使用:状态机,对于2个LED进行编程。与此同时,调用系统自带的系统滴答定时器函数做精准的ms延时函数。
/*1.LED1 ON LED2 OFF 延时1S2.LED1 OFF LED2 ON 延时1S3.LED1 OFF LED2 OFF 延时1S4.LED1 ON LED2 ON 延时1S*/
分为4种状态!
为验证系统滴答定时器的ms延时函数是否精准,本项目还做了一个基本的LED闪烁功能(1S点亮、1S熄灭),并通过示波器检测其输出引脚的波形,如下所示。
我们会发现其总时长就是2s,因此验证了理论的正确性;
将代码撰写完毕后,烧写进入,实验显示如下所示:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
4.蜂鸣器
此处作为作业布置给各位,考察各位的GPIO输出是否掌握!
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
5.按键检测
首先看看电路板载的两个用户按键的原理图:
我们可以发现的是:按键在未按下的时候,处于高电平状态;案件在按下的时候,处于低电平状态。
本例程就是使用GPIO的输入读取,检测按键1和按键2的状态,进而控制LED灯;
1、如果按键1按下,LED1翻转;2、如果按键2按下,LED2翻转
实验中遇到了一个问题:就是我按下按键,示波器感受到了明显变化,但是就是LED没有翻转;
原因:我忘记在进入KEY1_DOWN函数时修改系统的按键状态了,这样的话,它默认一直就是KEY1_DOWN状态了,接下来怎么按,都不行,因此需要在最后更改状态成默认的KEY_UP即可。
接下来就是我瞎按的实验波形,哈哈,看看就行,具体自己下入开发板进行观测实验现象就好。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
6.中断检测
硬件原理图仍保持不变,就是两颗按键。
跟前面不同的是,我们本次需要做的是利用外部中断点亮两颗LED灯。
首先我们先认识一下什么是外部中断。
值得注意的几个小点:
1、由于部分外设的中断复用一个 IRQ 中断源,用户在中断服务程序中应先检查中断标志位,以确定产生中断的外设。2、HSE 、LSE 时钟信号起振失败和 LSI、LSE、HSIOSC、HSE、PLL 时钟信号稳定对应 RCC 全局中断。3、HSE 或 LSE 时钟信号在运行中失效对应 FAULT 中断
编程思路:
1、配置GPIO引脚为中断引脚。2、清除该引脚的中断标志位。3、使能该引脚的中断。4、进入中断函数。5、中断函数中清楚标志位。6、实现相应功能。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
7.串口通讯
首先我们看看硬件电路图:
VDDU如果通过杜邦线连接到了5V供电,那么跳帽应该保持J5的引脚1-2相连。
VDDU如果通过杜邦线连接到了3.3V供电,那么跳帽应该保持J5的引脚2-3相连。
如果你开发电路时,不知道那个是J5的1-2-3引脚的话,我这有一种方法推荐给你:
你随意用跳帽连接两个引脚,然后去测量C19两端的电压!1、如果你连接了J5的1-2引脚,那么C19两端的电压应该是3.3V。2、如果你连接了J5的2-3引脚,那么C19两端的电压应该是0V.
具体的硬件排布如下图所示:
注意的是:VDDU在开发之前一定要连接到你想连接的电压!!!不然CH340N没有供电,则无法工作!!!
最后就是找到UART1的发送和接收引脚了,如下图所示,我这里拿这一组引脚进行测试。
OK,在硬件电路图完毕后,我们就可以撰写代码了,主要就是实现能够用printf打印即可,其他可自行添加内容。
课堂穿插之4×4矩阵键盘
代码很简单,就是采用变行读列的方法。实验现象如下所示:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
8.基本定时器
CW32F030 内部集成 3 个基本定时器 (BTIM),每个 BTIM 完全独立且功能完全相同,各包含一个 16bit 自动重装载计数器并由一个可编程预分频器驱动。BTIM支持定时器模式、计数器模式、触发启动模式和门控模式 4 种工作模式,支持溢出事件触发中断请求和 DMA 请求。得益于对触发信号的精细处理设计,使得 BTIM 可以由硬件自动执行触发信号的滤波操作,还能令触发事件产生中断和 DMA 请求。
本例程实现一个LED的闪烁功能,时间是500ms闪烁一次;
static void BTIM_Init(uint16_t Period,uint16_t Prescaler)
{
BTIM_TimeBaseInitTypeDefBTIM_TimeBaseInitStructure = {0};
__RCC_BTIM_CLK_ENABLE();
__disable_irq();
NVIC_EnableIRQ(BTIM1_IRQn);
__enable_irq();
BTIM_TimeBaseInitStructure.BTIM_Mode = BTIM_Mode_TIMER;
BTIM_TimeBaseInitStructure.BTIM_OPMode = BTIM_OPMode_Repetitive;
BTIM_TimeBaseInitStructure.BTIM_Period = Period;BTIM_TimeBaseInitStructure.BTIM_Prescaler = Prescaler;
BTIM_TimeBaseInit(BTIMX,&BTIM_TimeBaseInitStructure);
BTIM_ITConfig(BTIMX,BTIM_IT_OV,ENABLE);
BTIM_Cmd(BTIMX,ENABLE);
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
9.通用定时器
CW32F030 内部集成 4 个通用定时器 (GTIM),每个 GTIM 完全独立且功能完全相同,各包含一个 16bit 自动重装载计数器并由一个可编程预分频器驱动。GTIM 支持定时器模式、计数器模式、触发启动模式和门控模式 4 种基本工作模式,每组带 4 路独立的捕获 / 比较通道,可以测量输入信号的脉冲宽度(输入捕获)或者产生输出波形(输出比较和 PWM)。
利用通用定时器我们可以做输出PWM、基本延时等功能!我这里就抛砖引玉以下,点个灯吧。输出PWM就留给高级定时器做吧。
本例程实现一个LED的闪烁功能,时间是1s闪烁一次;
static void GTIM_Init(uint16_t Period,uint16_t Prescaler)
{
GTIM_InitTypeDefGTIM_InitStructure = {0};
__RCC_GTIM1_CLK_ENABLE();
__disable_irq();
NVIC_EnableIRQ(GTIM1_IRQn);
__enable_irq();
GTIM_InitStructure.Mode = GTIM_MODE_TIME;
GTIM_InitStructure.OneShotMode = GTIM_COUNT_CONTINUE;
GTIM_InitStructure.Prescaler = Prescaler;
GTIM_InitStructure.ReloadValue = Period;
GTIM_InitStructure.ToggleOutState = DISABLE;
GTIM_TimeBaseInit(GTIMX,>IM_InitStructure);
GTIM_ITConfig(GTIMX,GTIM_IT_OV,ENABLE);
GTIM_Cmd(GTIMX,ENABLE);
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
10.高级定时器
高级定时器 (ATIM) 由一个 16 位的自动重载计数器和 7 个比较单元组成,并由一个可编程的预分频器驱动。ATIM 支持 6 个独立的捕获 / 比较通道,可实现 6 路独立 PWM 输出或 3 对互补 PWM 输出或对 6 路输入进行捕获。可用于基本的定时 / 计数、测量输入信号的脉冲宽度和周期、产生输出波形(PWM、单脉冲、插入死区时间的互补 PWM 等)。
既然谈到了高级定时器,那肯定少不了输出PWM了。那我这里就只做个PWM的三路互补输出吧。
通道1我们设置了占空比是50%,通道2是25%。可以看看如下实验现象,就可以看到我们的代码完全没问题
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
11.IIC
CW32F030 内部集成 2 个 I2C 控制器,能按照设定的传输速率(标准,快速,高速)将需要发送的数据按照 I2C 规范串行发送到 I2C 总线上,并对通信过程中的状态进行检测,另外还支持多主机通信中的总线冲突和仲裁处理。
原理部分内容,我就不赘述太多,主要是通讯的逻辑性问题。
我这里使用两个方法:1、软件IIC;2、硬件IIC。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
11.1 软件IIC
通过GPIO模拟IIC通讯逻辑,进而驱动OLED 0.96寸屏!
我们随便找一个IIC引脚即可,如下图所示。
因此我这里就选用PB6和PC7作为IIC引脚模拟口吧,其他引脚一样!
具体实现看代码,我这里就展示一下最终的实验现象图。
显示文字:芯源。然后数字累加255,再重新加!
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
11.2 硬件IIC
使用硬件IIC驱动OLED!
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
12.SPI
串行外设接口(SPI)是一种同步串行数据通信接口,常用于 MCU 与外部设备之间进行同步串行通信。 CW32F030 内部集成 2 个串行外设 SPI 接口,支持双向全双工、单线半双工和单工通信模式,可配置 MCU 作为主机或从机,支持多主机通信模式,支持直接内存访问(DMA)。
本例程主要采用SPI软件模拟的方式驱动LCD19264,原理部分也没什么好多说的,基本上也没多少,直接阅读代码即可。
前几天看到群里有个朋友说:他的外设是5V供电,他不知道怎么板了。其实方法特别多,我就只说一种吧,最简单的一种,那就是直接把CN24的VDDUSB的引脚通过排针引出来即可!如下图所示
我这里文档就只展示以下实验现象图吧,具体不懂的细节,可以在评论区与我讨论,嘿嘿。
先展示数值206,寓意:爱你哟!然后1S后,显示一个图片----随便找的图片,你们喜欢什么图片可以通过取模的方式把图片弄上去就好~很简单的哦。不懂的再跟我沟通交流哈!
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
13.ADC
CW32F030 内部集成一个 12 位精度、最高 1M SPS 转换速度的逐次逼近型模数转换器 (SAR ADC),最多可将 16 路模拟信号转换为数字信号。现实世界中的绝大多数信号都是模拟量,如光、电、声、图像信号等,都要由 ADC 转换成数字信号,才能由 MCU 进行数字化处理。
我这里就采用单路ADC读取滑动变阻器的读值并通过串口打印出来吧。算是一个ADC的一个基本例程提供给各位进行参考学习。
首先是看串口,你扭动旋钮,读值会变化。
最后再看看示波器,也会变化,因为我是静图,我这里就显示三个图,0V-中间电压-3.3V。剩下的你们可以自己去下载程序后观看.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
14.测试总结
我分别测评了:
1、如何新建工程。
2、如何配置系统时钟?如何查看系统波形是否正确?代码很详细,分别采用了常用了二种模式:内部高速时钟和外部高速时钟。并通过示波器展示了配置是否正确!相信你可以自己实际学会哦。
3、基本的嵌入式入门----点亮LED。其实就是学习GPIO输出功能。不同的是,我使用的状态机编程的逻辑,利用指针调取函数实现所谓的点灯功能!
4、蜂鸣器部分,我没有写出来,因为我觉得,LED都点亮了,我相信你肯定自己能实现这个蜂鸣器的功能!!!交给你的作业,记得完成哦。嘿嘿
5、按键检测,也就是学习GPIO输入功能。此处采用循环扫描的方法实现函数功能,并加入了软件去抖功能。
6、中断,也就是学习NVIC功能。按键按下->产生中断->进入中断服务函数->实现相应功能!
7、串口通讯,也就是学习USART功能。分别讲述了如何找到GPIO引脚,如何配置引脚,如何对硬件原理图的连接进行操作等规范细节问题,通过例程可以实现数据的收发功能!
8、插入了课堂小细节,那就是把以前的几个内容:GPIO输出、GPIO输入、按键检测、串口通讯,融合在一起,实现一个矩阵键盘的检测功能。
9、基本定时器,即BTIM。通过配置基本定时器的时基结构体,产生更新中断,从而精准延时闪烁LED。
10、通用定时器,即GTIM。通过配置通用定时器的时基结构体,产生更新中断,从而精准延时闪烁LED。
11、高级定时器,即ATIM。通过配置输出PWM,高端引脚产生不同占空比的PWM信号;低端引脚通过GPIO进行控制高低电平;为无刷直流电机的驱动做下坚实的基础!
12、IIC,分别实现了软件模拟IIC和硬件IIC功能。驱动OLED显示屏,显示指定内容。
13、SPI,通过GPIO模拟SPI通讯逻辑,实现驱动OLED19264显示屏的功能。也可以采用硬件SPI,官方给了引脚SPI的例程,所以我这里就没再做了,交给你的作业,记得完成哦。嘿嘿。
14、ADC,通过模数转换器将读取到的滑动变阻器的值,通过串口打印出来。
所有配套文件包括 原理图+固件库+代码程序+说明文档! 全部都保存在了网盘当中!有需要的小伙伴可以直接下载哦
链接:https://pan.baidu.com/s/180n_hvo8kS971ZaraWYyMA
提取码:4y1q
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
以上几乎涵盖了最基本的例程代码,我的评测就到此结束啦。后期有时间再与各位进行交流学习,目前有点忙,可能暂时评测就到此结束啦。
江湖如此之大,各位,再会!!!
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|