MCU单核,同一时间只能 执行一个事情,没有特殊情况下不能被打断
。所以引入特殊情况,定时器中断。
定时器作用:
1、用于计时系统,可实现软件计时,或乾使用程序每隔一固定时间完成一项操作。
2、替代找时间 的Delay,提高速度 。
生成3秒定时:
void Timer0_Isr(void) interrupt 1//引入中断
{
}
void Timer0_Init(void) //3秒@24.000MHz
{
TM0PS = 0x5B; //设置定时器时钟预分频 ( 注意:并非所有系列都有此寄存器,详情请查看数据手册 )
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x3F; //设置定时初始值
TH0 = 0x01; //设置定时初始值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
}
3、函数的定义、声明、调用
返回值 函数名(入口参数)
{
//函数体
//函数执行的代码
Return 返回值
} 芯映芯 发表于 2025-11-5 09:29
推荐优先看的 printf_usb("Hello World !\r\n")及usb不停电下载, 演示视频链接
不停电下载-演示视频
1、直接输出,Hello World
代码:
while (1)
{
printf_usb("Hello World !\r\n");
//\r是回车,并跳到行首,\n是换行,就是换到下一行;\r\n不要交换次序
}
2、查询方式
代码
while (1)
{
if (bUsbOutReady) //查询是否有接收到数据
{
if (UsbOutBuffer == 6)
printf_usb("Hello World !\r\n");
else if (UsbOutBuffer == 7)
printf_usb("China !\r\n");
usb_OUT_done(); //当前包的数据处理完成
}
}
}
输入6,hello world,输入7,China.
3、中断方式
void USBLIB_OUT_Callback(void)
{
if (UsbOutBuffer == 6)
printf_usb("Hello World !\r\n"); //接收到数据6后打印“Hello World !”
else if (UsbOutBuffer == 7)
printf_usb("China !\r\n"); //接收到数据7后打印“China !”
}
今天收到了陆娟小姐安排的实验箱,感谢!
这是上次兑换的IC
<p>第八课,定时器周期性调度任务(产品化专业化)</p>
<p>1、创建程序文件 三步,把硬件需要的初始化弄一个config.c</p>
<p>新建文件并保存</p>
<p>添加到工程</p>
<p>添加引用路径</p>
<p>一般一个.c和一个.h文件 执行一个外设或者一个任务或功能,这样可以让代码看起来简洁明了。</p>
<p>新建xxx.c和xxx.h文件(不要用特殊字符) ,代表一个功能块</p>
<p>xxx.h格式</p>
<p>#ifndef__XXX _H</p>
<p>#define _XXX _H</p>
<p>调用头文件</p>
<p>函数声明</p>
<p>#endif</p>
<p>xxx.c格式</p>
<p>#include "xxx.h"</p>
<p>函数定义</p>
<p>添加 文件 一定要记得引用路径和添加到工程里。</p>
<p>2、结构体数组的周期性任务调度</p>
<p>LED1 0.3闪一次,LED2 0.6秒闪一次,LED3 0.9秒闪一次</p>
<p>a、都 有一个定时器1ms加的变量</p>
<p>b、都 有一个设定的计数目标</p>
<p>c、都 有需要执行的功能</p>
<p>d、定时时间到了才能执行</p>
<p>tyedef struct</p>
<p>{</p>
<p>u8 Run;</p>
<p>u16 TIMCount;</p>
<p>u16 TRITime;</p>
<p>void(*TaskHook)(void);//</p>
<p>}TASK_COMPONENTS;</p>
<p>TASK_COMPONENTS Task_comps[] =</p>
<p>{</p>
<p>};</p>
第九课数码管
1、原理
attach://121312.jpg
2、代码
attach://121313.jpg
3、虚拟显示
attach://121314.jpg
页:
1
[2]