历史上的今天
返回首页

历史上的今天

今天是:2024年10月18日(星期五)

正在发生

2019年10月18日 | MiniARM2300电脑自动打铃器设计与实现ucos操作系统

2019-10-18 来源:51hei

单片机源程序如下:


/****************************************Copyright (c)****************************************************

**                            Guangzhou ZHIYUAN electronics Co.,LTD.

**                                      

**

**--------------File Info---------------------------------------------------------------------------------

** File name:           main.c

** Last modified Date:  2007-09-01

** Last Version:        1.0

** Descriptions:        The main() function example template

**

**--------------------------------------------------------------------------------------------------------

** Created by:          Zhenghongtao

** Created date:        2007-09-01

** Version:             1.0

** Descriptions:        The original version

**

**--------------------------------------------------------------------------------------------------------

** Modified by:

** Modified date:

** Version:

** Descriptions:

**

*********************************************************************************************************/

#include "config.h"                                                     /*  系统头文件                  */

#include "i2c.h"


#define TASKKEY_ID              12                                      /*  定义键盘任务的ID            */

#define TASKKEY_PRIO            TASKKEY_ID                              /*  定义键盘任务的优先级        */

#define TASKKEY_STACK_SIZE      512                                     /*  定义键盘任务堆栈大小        */


#define TASKDISP_ID             13                                      /*  定义显示任务的ID            */

#define TASKDISP_PRIO           TASKDISP_ID                             /*  定义显示任务的优先级        */

#define TASKDISP_STACK_SIZE     512                                     /*  定义显示任务堆栈大小        */


#define TASKCTRL_ID             6                                       /*  定义控制任务的ID            */

#define TASKCTRL_PRIO           TASKCTRL_ID                             /*  定义控制任务的优先级        */

#define TASKCTRL_STACK_SIZE     512                                     /*  定义控制任务堆栈大小        */


OS_STK        TaskKeyStk[TASKKEY_STACK_SIZE];                                 /*  定义键盘任务的堆栈          */

OS_STK        TaskDispStk[TASKDISP_STACK_SIZE];                               /*  定义显示任务的堆栈          */

OS_STK        TaskCtrlStk[TASKCTRL_STACK_SIZE];                               /*  定义控制任务的堆栈          */



void TaskKey(void *pdata);                                              /*  TaskKey  键盘任务           */

void TaskDisp(void *pdata);                                             /*  TaskDisp 显示任务           */

void TaskCtrl(void *pdata);                                             /*  TaskCtrl 控制任务           */


void ToDispBuf(void);

void FromDispBuf(void);

void GetTime(void);

void SetTime(void);

void RTC_Exception(void);


OS_EVENT       *GmboxRingCtrl;


unsigned int    GuiMode   = 0;                                          /*  模式                        */

unsigned int    GuiCursor = 8;                                          /*  光标                        */

unsigned int    GuiIndex  = 0;                                          /*  索引                        */

unsigned int    GuiItem   = 0;                                          /*  条目                        */


/*********************************************************************************************************

  时钟结构定义

*********************************************************************************************************/

struct time {

    unsigned char       ucHour;                                         /*  时                          */

    unsigned char       ucMin;                                          /*  分                          */

    unsigned char       ucSec;                                          /*  秒                          */

    unsigned char       ucWeek;                                         /*  星期                        */

    unsigned short      usYear;                                         /*  年                          */

    unsigned char       ucMon;                                          /*  月                          */

    unsigned char       ucDay;                                          /*  日                          */

};

typedef struct time     TIME;

typedef TIME           *PTIME;

/*********************************************************************************************************

  闹钟结构定义

*********************************************************************************************************/

struct alarm {

    unsigned char       ucHour;                                         /*  时                          */

    unsigned char       ucMin;                                          /*  分                          */

    unsigned char       ucSec;                                          /*  秒                          */

推荐阅读

史海拾趣

Amptek Inc公司的发展小趣事

Amptek Inc 是一家专注于放射性测量和分析仪器的公司,提供各种 X 射线和伽马射线探测器以及相关的测试设备和软件。以下是 Amptek 公司发展的五个相关故事:

  1. 公司成立与早期发展:Amptek 公司于1987年成立,总部位于美国马萨诸塞州贝弗利市。公司成立初期,主要从事于放射性测量仪器的研发和生产。创始人团队在核物理和仪器设计领域拥有丰富的经验,致力于提供高性能、高精度的测量和分析解决方案。

  2. 技术创新与产品升级:随着技术的不断进步,Amptek 公司持续进行技术创新和产品升级。公司引入先进的探测器技术和数据处理算法,不断提升产品的性能和精度。公司的 X 射线和伽马射线探测器在放射性测量和分析领域具有很高的声誉,被广泛应用于科学研究、医学诊断、工业检测等领域。

  3. 全球市场拓展:Amptek 公司在全球范围内建立了广泛的销售网络和服务体系。除了在美国设立销售和服务中心外,公司还在欧洲、亚洲等地设立了分支机构和代理商,为全球客户提供及时的技术支持和售后服务。公司的产品远销全球,赢得了国内外客户的信赖和好评。

  4. 科研合作与应用推广:Amptek 公司与世界各地的科研机构、大学和实验室保持着紧密的合作关系,共同开展科研项目和应用研究。公司的产品被广泛应用于粒子物理、天体物理、材料科学、核医学等领域的实验和研究中,为科学家和研究人员提供了强大的实验工具和数据支持。

  5. 持续发展与未来展望:Amptek 公司将继续致力于技术创新和产品研发,不断提升产品的性能和功能,满足客户不断增长的需求。公司将继续拓展国际市场,加强与客户的合作关系,进一步巩固在放射性测量和分析领域的领先地位。同时,公司还将关注新兴市场和新技术的发展趋势,积极布局未来的发展方向。

HDK(北陆电气)公司的发展小趣事

对于STM32与四线电阻触摸屏的接口电路,网友可能会有以下一系列问题,我将逐一进行回答:

1. STM32如何与四线电阻触摸屏连接?

回答:STM32与四线电阻触摸屏的连接主要通过STM32的GPIO口实现。通常,STM32的多个GPIO口会分别连接到四线电阻触摸屏的X+、X-、Y+、Y-四个引脚。这些引脚用于驱动和检测触摸屏上的触摸动作。

2. 如何在STM32上配置GPIO以支持四线电阻触摸屏?

回答:在STM32上配置GPIO以支持四线电阻触摸屏时,需要将相应的GPIO口配置为模拟输出(用于驱动触摸屏)或模拟输入(用于读取触摸屏上的电压信号)。此外,还需要配置中断引脚来检测触摸屏是否被触摸。具体的配置步骤包括设置GPIO的模式(如推挽输出、上拉输入等)、速度以及是否启用中断等。

3. 如何使用STM32读取四线电阻触摸屏的坐标值?

回答:读取四线电阻触摸屏的坐标值通常涉及两步操作:首先,通过驱动触摸屏的X+或Y+引脚为高电平,并同时保持对应的X-或Y-引脚为低电平,以在触摸屏上形成电压梯度;然后,使用ADC(模数转换器)读取另一侧的X+或Y+引脚上的电压值。根据读取到的电压值与参考电压的比例关系,可以计算出触摸点的X或Y坐标。为了获得更准确的坐标值,通常需要进行多次读取并取平均值。

4. 是否需要外部控制芯片来实现STM32与四线电阻触摸屏的接口?

回答:不一定需要外部控制芯片。STM32的GPIO口和ADC功能已经足够强大,可以直接与四线电阻触摸屏接口。然而,在某些情况下,为了简化电路设计或提高触摸检测的精度和稳定性,可能会使用如XPT2046这样的专用触摸屏控制芯片。这些芯片内部集成了A/D转换器和触摸屏控制逻辑,可以通过SPI等接口与STM32通信,从而简化软件设计。

5. 如何进行触摸屏的校准?

回答:触摸屏的校准是为了确保触摸点与实际屏幕坐标之间的准确对应。通常,在触摸屏首次使用或更换后需要进行校准。校准过程包括在触摸屏上选择几个已知的点(如屏幕的四个角),然后记录这些点对应的ADC值。通过计算这些点的ADC值与实际屏幕坐标之间的关系,可以得到校准参数(如缩放因子和偏移量)。在后续的触摸检测中,可以使用这些校准参数将ADC值转换为实际的屏幕坐标。

6. STM32与四线电阻触摸屏接口电路中的常见问题有哪些?

回答:STM32与四线电阻触摸屏接口电路中的常见问题可能包括:

  • 触摸屏无响应:可能是由于GPIO配置错误、ADC配置不当或触摸屏硬件故障等原因导致。
  • 坐标偏移:可能是由于触摸屏未正确校准或校准参数设置错误导致。
  • 触摸点跳动:可能是由于触摸屏表面有污渍、静电干扰或ADC采样不稳定等原因导致。

解决这些问题的方法通常包括检查GPIO和ADC的配置、重新校准触摸屏以及清洁触摸屏表面等。如果问题依然存在,可能需要检查触摸屏硬件是否损坏。

Exel Microelectronics Inc公司的发展小趣事

在XXXX年,Exel Microsystems Inc公司成功进入国际市场。公司凭借优质的产品和服务,赢得了国外客户的认可和信任。为了更好地服务国际市场,Exel还在多个国家和地区设立了分支机构和研发中心。这一市场拓展的成功不仅为公司带来了更多的商业机会,也提升了公司的国际知名度和影响力。

Elite Semiconductor Products Inc公司的发展小趣事

Elite Semiconductor Products Inc(以下简称Elite)自创立之初,就坚持以技术创新为核心竞争力。公司创始人是一位经验丰富的半导体工程师,他深知在电子行业,技术的领先意味着市场的领先。因此,Elite投入大量资源进行研发,不断推出具有领先性能的半导体产品。其中,一款高性能的芯片产品因其卓越的功耗控制和计算能力,在行业内引起了广泛关注。这款产品不仅帮助Elite打开了市场,也为公司后续的技术创新奠定了坚实的基础。

长运通(CYT)公司的发展小趣事

作为一家有社会责任感的企业,长运通始终关注环境保护和社会公益事业。公司积极推广绿色、环保的LED照明产品,致力于降低能源消耗和减少环境污染。同时,长运通也积极参与各种社会公益活动,为社会做出自己的贡献。这些举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了基础。

请注意,以上故事仅为概述,具体的细节和内容可能需要根据实际情况进行补充和调整。

ELMOS公司的发展小趣事

ELMOS作为一家欧洲公司,在世界各地都设有研发和销售办事处。这种全球化的布局使得ELMOS能够更好地了解不同市场的需求,为客户提供更加贴近市场的产品和服务。同时,通过与全球各地的客户和合作伙伴的紧密合作,ELMOS不断拓展其国际市场份额,进一步提升了公司的国际影响力。

问答坊 | AI 解惑

低功耗设计讲座

Dynamic power is required to charge and discharge load capacitances when transistors switch.When transistors switch, both nMOSand pMOSnetworks may be momentarily ON at once…

查看全部问答>

DSP培训讲义--TI CCS IDE集成开发环境

DSP 培 训 讲 义--TI CCS IDE集成开发环境…

查看全部问答>

关于CASE语句并行性的理解

关于CASE语句并行性的理解我感觉一般的CASE语句从语法上讲都是有优先级的啊,CASE分支项在前面的先执行啊,但为什么说CASE语句是并行的啊,我的理解是当分支项是相互排斥的时候才是并行的,不知道对不对??还有一中就是综合指令PARALLEL实现并行性 ...…

查看全部问答>

工控机或IBM服务器在server系统下备份的问题

工控机或IBM服务器在server系统下做备份,用一键GOHST软件无法备份,有没有其他方便又快捷的备份的工具或好的建议呢?请大家帮忙解决!!!…

查看全部问答>

关于STM32中断

                                 一个简单的按键中断,EXTI0 ,优先级 使能 怎么设置 请用 寄存器 秒速,谢谢!…

查看全部问答>

关于do{}while()的一点疑问

在做stm32SPI 通信时 读取SST25VF016B 的状态寄存器 do { 读SST25VF016B状态寄存器 }while(state&0x01);    读SST25VF016B内擦除后的数据 与 do { 读SST25VF016B状态寄存器 }while(state==0x01); 读SST25VF016B内擦除后 ...…

查看全部问答>

重温纸质记忆,The Little Printer通过云端将社交网络内容打印成属于你的小报纸

在这个浮于云端、电子书和智能手机盛行的年代,始终有人保存着对纸制品的爱。这或许是因为纸的质感和物理存在感,也可能是因为数码给人带来的不安全感。我们不再写信,不那么需要已经存好了档的胶卷相片,不那么地需要一张CD。当Email,聊天记录, ...…

查看全部问答>

PIC单片机位操作

PIC单片机如何像51单片机那样可以位操作? void Lcd_Write_Com( int  DH)         //命令 {            LCD_RS=0; LCD_CS =0;          ...…

查看全部问答>

c语言中static用法总结1

本帖最后由 tiankai001 于 2014-10-17 15:15 编辑 一、c程序存储空间布局 C程序一直由下列部分组成:正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令;初始化数据段(数据段)——在程序中所 ...…

查看全部问答>

【TI首届低功耗设计大赛】微型LCR测试仪-硬件篇之二

本帖最后由 snoweaglemcu 于 2014-11-22 00:42 编辑       欢迎大家回来,这篇小文将要描述的是微型LCR测试仪的信号源部分。                  上图是测试仪 ...…

查看全部问答>