澎湃微芯片入门教程

由于入门第一步那个教程有些复杂,这里更新一下入门教程,并编写一个延时函数
第一步:下载我上传的资源包,解压后有四个文件夹,如图所示:在这里插入图片描述简单介绍一下这四个文件夹,第一个文件夹是工程的配置文件和启动文件,文件夹需要做包含处理。在这里插入图片描述第二个文件夹是固件库,start是内核的和芯片的一些.h文件,需要做包含处理;Library是外设的固件库,有.c和.h文件,用的时候添加就行,.h文件需要做包含处理。在这里插入图片描述
第三个文件夹MDK_ARM,是项目工程文件,就不用说了。
第四个是USER文件夹,我们自己写的程序可以放在这里,需要做包含处理。

第二步:打开MDK_ARM文件夹,打开项目工程文件。我们需要重新添加.h文件的地址。刚刚我在上面说了有四个文件夹,除了MDK_ARM其余的都需要包含处理,现在处理一下。
点击运行,结果如图所示:0错误,0警告。在这里插入图片描述第二步,我们写一个延时函数,首先新建一个Window_Api.c和.h,延时函数我们可以使用系统时钟来实现,也就是Systick,所以包含一下头文件
在这里插入图片描述先写一个毫秒级的延时函数,如图在这里插入图片描述再写一个微妙级别的延时函数,如图
在这里插入图片描述延时函数到毫秒基本就行了,如果是秒级别的延时,太浪费系统资源了,我就不写秒级别的了。接下来测试一下,写个LED灯来演示一下。

我们配置PA2为LED灯的控制引脚,低电平电亮,现需要初始化引脚,设置为推挽输出。
在这里插入图片描述在主函数里面我们写一个循环,间隔0.5秒LED切换一次状态,先测试毫秒级,程序如图
在这里插入图片描述结果如我们所想的一样。
再测试微秒级,程序如图在这里插入图片描述然而结果并不理想,LED并没有如我们期望的那样进行翻转,考虑到这个是硬件置位,1微秒级别可能是太小了,来不及置位,所以将1us更改为10us级别,即在这里插入图片描述
在这里插入图片描述现在结果如我们所想的一样,解决问题,上述原因不一定正确,有更好的见解可以评论,欢迎指导。
程序如下:
Windows_Api.c

#include "Windows_Api.h"


void Delay_ms(uint32_t ms)
{
	uint32_t i;	
	SysTick_Config(SystemCoreClock/1000);
	
	for(i=0;i<ms;i++)
	{
		/* 当计数器的值减小到0的时候,CRTL寄存器的位16会置1*/	
		/* 当置1时,读取该位会清0*/	
		while( !((SysTick->CTRL)&(1<<16)) );
	}
	/* 关闭SysTick定时器*/	
	SysTick->CTRL &=~ SysTick_CTRL_ENABLE_Msk;
}

void Delay_us(uint32_t us)
{
	uint32_t i;
	SysTick_Config(SystemCoreClock/100000);
	
	for(i=0;i<us;i++)
	{
		/* 当计数器的值减小到0的时候,CRTL寄存器的位16会置1*/	
		while( !((SysTick->CTRL)&(1<<16)) );
	}
	/* 关闭SysTick定时器*/	
	SysTick->CTRL &=~ SysTick_CTRL_ENABLE_Msk;
}


void APP_Gpio_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStruct;
	/* 初始化结构体 */	
	GPIO_InitStruct.GPIO_Mode = GPIO_OType_PP;
	GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_2;
	GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
	
	GPIO_Init(CMSDK_PA, &GPIO_InitStruct);
	GPIO_SetBits(CMSDK_PA, GPIO_Pin_2);
}

void Windows_Api_Init(void)
{
	APP_Gpio_Init();
}


Windows_Api.h

#ifndef __WINDOWS_API_H
#define __WINDOWS_API_H

#include "pt32x031.h"
#include "pt32x031_sys.h"
#include "pt32x031_gpio.h"

void Delay_us(uint32_t us);
void Delay_ms(uint32_t ms);
void Windows_Api_Init(void);

#endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值