ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

UC驱动蜂鸣器

2020-05-10 12:52:58  阅读:210  来源: 互联网

标签:... 蜂鸣器 void .... 任务 GPIO 驱动 UC


做这个调试,是为了好几天没有使用STM32了,怕手生,所以就在系统中添加了一个小项目...

目标:让蜂鸣器响就行.....

之前我们我们以为在移植时加入了LED的闪烁,我们这次在LED的闪烁时,加入蜂鸣器的驱动......

在听完2遍的课程之后,突然感受,基础是最关键的....在能够调用标准库后,就已经可以做很多东西了....

裸机运行,只能一条线的往前走,运行完一个才能接住运行下一个...

加入系统,是为了多任务并行,说是并行,其实是宏观上并行,微观上实质上也是串行的...

并行...系统为了调度任务...把任务切成一小块一小块的运行,就是A任务运行一会,B任务运行一会,C任务运行一会,之后在A任务运行,就是循环,当然了系统为了加入了优先级,通过优先级就可以安排谁先运行,还有就绪态,查找任务是否就绪等等....

接下来我们就接着说说是如何添加蜂鸣器的....

为了便于管理,我们先建立蜂鸣器的驱动文件...建立beep.c与beep.h,

在.c中初始化pin,我们在原理图中查看,蜂鸣器的管脚为GPIOC的0pin.....

其中注意的是在keil的编译环境下无参数传入的时候,在()内些void....否则会报出警告的...

 

 在.h中做声明...

 

 驱动就这样做好了......

接下来是任务创建

与LED一样,我们在static  void App_TaskStart(void* p_arg){.........}中添加任务...配置任务...可以进行调度

//App_TaskCreate();蜂鸣器
OSTaskCreate((void (*) (void *)) App_TaskUser2,
/* Create the start task. */
(void *) 0,
(OS_STK *) &App_TaskBEEPStk[APP_TASK_BEEP_STK_SIZE - 1],
(INT8U) APP_TASK_BEEP_PRIO);

创建任务内容:

static  void App_TaskUser2(void* p_arg){.......}实际内容就是:

while (DEF_TRUE)
{
GPIO_SetBits(GPIOC, GPIO_Pin_0);
OSTimeDlyHMSM(0, 0, 0, 100);
GPIO_ResetBits(GPIOC, GPIO_Pin_0);
OSTimeDlyHMSM(0, 0, 00, 1000);
GPIO_SetBits(GPIOC, GPIO_Pin_0);
OSTimeDlyHMSM(0, 0, 0, 100);
GPIO_ResetBits(GPIOC, GPIO_Pin_0);
OSTimeDlyHMSM(0, 0, 00, 100);
printf("任务二");
}

控制GPC0端口,与LED是一样的......

 

这个熟练了,之后我们可以继续学一写其他的驱动了.....

标签:...,蜂鸣器,void,....,任务,GPIO,驱动,UC
来源: https://www.cnblogs.com/qq376142178/p/12862868.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有