打印

GD32F207 定时实验

[复制链接]
1144|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在 GD32F207 处理器中, SysTick 的最小计时单位为 AHB 的时钟周期,即 1/72000000 秒
(1/72 微秒),这样的精度足以满足大部分应用需求。本实验利用 SysTick 实现精确延时功
能,控制 LED 以 1 秒的频率闪烁。
沙发
junpeng324|  楼主 | 2018-10-30 12:51 | 只看该作者
systick 中断函数
void SysTick_Handler(void)
{
static int TimingDelayLocal = 0;
TimingDelayLocal++;
if (TimingDelayLocal == 1000)
{
EvbLedToggle(1);
EvbLedToggle(2);
EvbLedToggle(3);
TimingDelayLocal = 0;
}
}

使用特权

评论回复
板凳
junpeng324|  楼主 | 2018-10-30 12:51 | 只看该作者
static void SysTickConfig(void)
{
// 1ms
if (SysTick_Config(SystemCoreClock / 1000))
{
while (1);}
NVIC_SetPriority(SysTick_IRQn, 0x00);
}

使用特权

评论回复
地板
junpeng324|  楼主 | 2018-10-30 12:51 | 只看该作者
int main(void)
{
/* 配置使能评估板上的设备 */
EvbSetupBoard();
PRINTF("感谢使用Colibri开发板\r\n");
PRINTF("\r\n");
PRINTF("##### SYSTICK试验 #####\r\n");
PRINTF("\r\n");
SysTickConfig();
while(1);
}

使用特权

评论回复
5
junpeng324|  楼主 | 2018-10-30 12:52 | 只看该作者
SysTick 初始化
函数 SysTick_Config()是属于内核层的通用库函数,位于 core_cm3.h 文件中。 在调用
SysTick_Config()函数时,向它输入的参数为: SystemCoreClock / 1000。因为
SystemCoreClock 是系统时钟(SYSCLK, 72M)频率,所以定时器会每 1ms 中断 1
次。

使用特权

评论回复
6
junpeng324|  楼主 | 2018-10-30 12:52 | 只看该作者
中断处理函数
SysTick 中断属于系统异常向量,在 GD32F207f10x_it.c 文件中已经默认有了它的中
断服务函数 SysTick_Handler()。

使用特权

评论回复
7
junpeng324|  楼主 | 2018-10-30 12:52 | 只看该作者
用户定时函数
用户函数 SystickDelay()首先初始化全局变量 DelayTimes 用来记录本次定时次数, 因
为前面设置 SysTick 每 1ms 中断一次,所以当 DelayTimes 为 1000 时,恰好是定时 1
秒。

使用特权

评论回复
8
junpeng324|  楼主 | 2018-10-30 12:53 | 只看该作者
void LED_Spark(void)
{
static int TimingDelayLocal = 0;
TimingDelayLocal++;
if (TimingDelayLocal == 1000)
{
EVB_LEDToggle(1);
TimingDelayLocal = 0;}
}

使用特权

评论回复
9
junpeng324|  楼主 | 2018-10-30 12:53 | 只看该作者
实验现象
将 Colibri 开发板供电,插上 USB 串口线,打开串口工具,配置串口工具为 115200 8-N-1,
将编译好的程序下载到开发板,即可看到串口工具打印出如图 12-4 的信息。手动输入任意
字符后,板载 LED 开始不停的闪烁。

使用特权

评论回复
10
junpeng324|  楼主 | 2018-10-30 12:54 | 只看该作者
SYSTICK 实验结果
  


使用特权

评论回复
11
heimaojingzhang| | 2018-11-8 13:21 | 只看该作者
不错不错很详细

使用特权

评论回复
12
magicoctoy| | 2018-11-30 21:52 | 只看该作者

用的哪个串口软件呢?

使用特权

评论回复
13
magicoctoy| | 2018-11-30 21:53 | 只看该作者
junpeng324 发表于 2018-10-30 12:52
用户定时函数
用户函数 SystickDelay()首先初始化全局变量 DelayTimes 用来记录本次定时次数, 因
为前面设 ...

OS用的也是这个SysTick 吧。

使用特权

评论回复
14
magicoctoy| | 2018-11-30 21:53 | 只看该作者
junpeng324 发表于 2018-10-30 12:53
实验现象
将 Colibri 开发板供电,插上 USB 串口线,打开串口工具,配置串口工具为 115200 8-N-1,
将编译 ...

Colibri 是官方的那个小黄板吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

1130

帖子

8

粉丝