This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
我尝试使用 SysTick 来创建延迟。但只有第一个 LED 始终亮起...
我的代码如下所示。
#include
#include "tm4c123ghp6.h"
void SysTick Init (void);//初始化 SysTick 计时器
void SysTick 等待(unsigned long delay1);
void SysTK_Wait10ms (unsigned long delay1);//等待时间
//***** 2.全球声明部分*****
//函数原型:定义的每个子例程
//Next[8]数组代表8个输入和下一个状态转换
//第一个数组元素代表000个输入,第二个数组元素代表001个输入,依此类推,最多111个(第八个输入)
//输入位表示- MSB=步进传感器、中间位=南传感器、LSB =西传感器
//FSM[9]={
//{输出到六个信号 LED (TrafficLights_Cars)、输出到两个行人 LED (TrafficLights_Ped)、以10ms 为单位的时间、Next[8]阵列元素(Next States)}、
//…………………
无符号长整型输入;
//***** 3.子例程部分*****
int main (void){
volatile unsigned long delay;
GPIO_PORTB_AMSEL_R=0x00;//禁用端口 B 上的模拟
GPIO_Porte _AMSEL_R=0x00;//禁用端口 E 上的模拟
GPIO_PORTB_PCTL_R=0x00000000;//启用常规 GPIO
GPIO_Porte _PCTL_R=0x00000000;//启用常规 GPIO
GPIO_PORTB_DIR_=0x1F;// PB0-5上的输出
GPIO_Porte _DIR_=0x00;// PE0-2上的输入
GPIO_PORTB_AFSEL_R=0x00;//禁用备用功能
GPIO_Porte _AFSEL_R=0x00;//禁用备用功能
GPIO_PORTB_DEN_R=0x1F;//在 PB0-5上启用数字 I/O
GPIO_Porte _DEN_R=0x07;//在 PE0-2上启用数字 I/O
while (1){
GPIO_PORTB_DATA_R=0x01;
SysTK_Wait10ms (100);
GPIO_PORTB_DATA_R=0x02;
SysTK_Wait10ms (100);
}
}
void SysTick Init (void){
NVIC_ST_CTRL_R = 0;//在设置期间禁用 SysTick
NVIC_ST_CTRL_R = 0x00000005;//使用内核时钟启用 SysTick
}
//延迟参数以80 MHz 内核时钟的单位表示。 (12.5ns)
void SysTick 等待(unsigned long delay2){
NVIC_ST_RELOAD_R = delay2-1;//等待计数
NVIC_ST_CURRENT_R = 0;//写入当前的任何值都会清除
while ((NVIC_ST_CTRL_R&0x00010000)=0){//等待计数标志
}
}
// 800000*12.5ns 等于10ms
void SysTK_Wait10ms (无符号长 delay1){
unsigned long i;
for (i=0;<delay1; i++){
SysTick 等待(800000);//等待10ms
}
}
海报不会因为不明智(和未警报)使用直接注册编码而经历更大、更关键的"延迟"?
您好、Bruno、
我知道有些教育机构要求其学生学习如何使用直接寄存器访问对 MCU 进行编程。 我认为讲师有这样做的意图。 我不想在这里辩论。 当然、从支持的角度来看、使用 TivaWare 库会更容易。 谢谢。
这里有些人可能注意到"供应商论坛指南"与父母之间的相似性。 (两者都负责指导、鼓励和(部分)纪律...)
下面说明了此处明显的"弱点"(此主题):
男父母:"我禁止你这么做!" (对孩子说)
女性家长:"是的-你可以做到!" (对同一个孩子说)
一致性(长期)已被证明是"最佳工作"。 并且尚未流过该线程...
作为小型的技术企业所有者-如果我们在项目/产品开发期间遵循(主要)使用"直接注册或 ASM "的人员(可能)的工作安全实践、公司/我不会持续很长时间。 “比赛是对速发车”——不是吗? 人们必须学习经济学和工程学-那些提早进入市场的人会获得最高的利润。 DRM 支持者确保(非常)延迟到达市场-这是否是好的?
对于学生和那些"在现场"的学生来说、寻求"最佳实践-技巧和方法"是否更为重要? 该供应商提供一流的 API、即"经过试用、测试和验证!" 拒绝这样做是否明智? 真的吗?
请注意-" DRM 或 ASM 的每一个用途"(最常)都是一次新的冒险! 生成的代码(始终)为"未经测试、未经测试且远未经过验证!" 这种情况的证据每天都有-就在这里- DRM 用户"崩溃/烧坏"且有淫秽的规律性。 除了在"缓慢和错误的邀请运动"中发展之外、还学到了什么?
API 的"绝对不能"使用会阻止对适用寄存器的全面审查。 在我看来-拒绝 API 是过去不受欢迎的痕迹-只有在没有指导的寄存器操作可用的情况下。
当今的技术发展本质上是全球性的-拒绝"巧妙、专注、经过测试和广泛"的最佳实践增强(即供应商的 API)是不合理的!