本次示例中的延时函数采用了系统内部的systick时钟,学习了正点原子的延时函数写法。
如果你移植出来不是标准的延时,那么就是你的时钟频率设置的不对,我的是48MHz。
delay.c
#include "delay.h"
static uint8_t fac_us=0;
//初始化延时函数
void Delay_Init(void)
{
fac_us = SystemCoreClock / 1000000;
}
//延时us
void delay_us(uint32_t nus)
{
uint32_t temp;
SysTick->LOAD=(uint32_t)(nus*fac_us);
SysTick->VAL=0x00;
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_CLKSOURCE_Msk;
do
{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;
SysTick->VAL =0X00;
}
//延时ms
void delay_ms(uint16_t nms)
{
uint16_t i = 0;
for(i=0;i delay_us(1000);
}
delay.h
#ifndef __DELAY_H
#define __DELAY_H
/* DriverLib Includes */
#include
void Delay_Init(void);
void delay_us(uint32_t nus);
void delay_ms(uint16_t nms);
#endif
下一节我会给出如何修改系统时钟频率以及如何查看系统时钟频率
关键字:MSP432 Keil5 delay
引用地址:
MSP432(Keil5)——3.delay延时驱动
推荐阅读最新更新时间:2024-11-18 12:00
[单片机][KEIL5] 利用虚拟机或服务器远程编译keil工程,实现网络隔离
利用一个小工具实现远程编译, 命令格式(界面版):虚拟机IP|功能码|项目工程名 命令格式(无界面版):keil_build.exe 虚拟机IP 功能码 项目工程名 编译完成会自动打开编译信息log 客户端可以配对keil使用如下: xxKeil5_Buildkeil_build.exe 192.168.56.101 b @p $p @P是指工程名称,由keil自动填充 虚拟机或服务器直接打开软件运行即可,程序会自动去寻找指定工程并编译。 方法一:工程在本地 服务器将客户端目录映射成网络硬盘。软件会自动去扫描客户端网络硬盘。 方法二:工程在远端 客户端将服务器目录映射到本地成为网络硬盘,软件直接扫描服务器。客户端可
[单片机]
【MSP430】关于MSP430的精准延时__delay_cycles的分析
首先我们先看以下代码: #define CPU_F ((double)8000000) //CPU_F代表系统选用的主时钟大小,单位Hz #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) 分析上述代码: 一、8000000为MSP430板载的外部高速晶振提供的8MHz的主时钟频率,单位为Hz 二、__delay_cycles是
[单片机]
STM32的SysTick定时器与Delay延时函数
1.BB一下 原子哥的Delay延时函数,在没有使用OS的情况下,没有使用SysTick中断,而笔者希望通过该中断记录系统时间 不使用OS,使用SysTick中断 不使用OS,不使用SysTick中断 使用OS,使用SysTick中断 2.BB完了,上代码 2.1.不使用OS,使用SysTick中断 #define SYSTICK_INT_MS 500 /* 定义 SysTick 定时器 1/SYSTICK_INT_MS秒中断一次 */ static u8 fac_us=0; static u16 fac_ms=0; static u32 _tickMs = 0; void SysTick_Handler(void)
[单片机]
MSP432学习笔记:将MCLK、SMCLK配置为48MHz
一切尽在代码中: void Clock_Init(void){ //将PJ2、PJ3设置为外部复用模式(HFXT) GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_PJ,GPIO_PIN2|GPIO_PIN3,GPIO_PRIMARY_MODULE_FUNCTION); //设定外部时钟输入频率 CS_setExternalClockSourceFrequency(32768,48000000); //修改核心电压等级为CORE1 PCM_setCoreVoltageLevel(PCM_VCORE1); //开启HFXT(fa
[单片机]
MSP432库函数输出多路任意占空比PWM波
本文适用于msp432库函数开发使用者,且已具备msp432环境(我使用的是keil),已下载SDK包,并有simeplink例程。若需要这些资源的,可以在评论区回复,我看见了会及时发送的! 今天要分享的是使用msp432库函数输出多路pwm,用以控制基础的电机转动。 1)所用到的引脚 P7.4~P7.7 、P2.4~P2.7共八路提供选择 2)查看数据手册 由手册可以知道,定时器TA0,寄存器CCR0~CCR4对应P2.4 - P2.7 定时器TA1,寄存器CCR0~CCR4对应P7.4 - P7.7 3)输出PWM初始化 /* Timer_A Compare Configuration Parameter
[单片机]