⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 《μCOS-II微小内核分析与程序设计-基于LPC2300》配套例程第三章 uCOS-II程序设计实例
💻 C
📖 第 1 页 / 共 2 页
字号:
** Returned value:			无 
**********************************************************************************************************/
void TaskKey (void *pdata)
{
	pdata = pdata;
    TargetInit();                                                       /*  目标板初始化                 */
   	IO0DIR = ~Key1;                                                     /*  定义按键方向为输入           */
   	Sem = OSSemCreate(0);                                               /*  创建信号量                   */
   	while (1) {
    while ((IO0PIN & Key1) != 0) {                                  	/*  等待按键按下                 */
   	        OSTimeDly(1);                                               /*  延时1个clk                   */
        }
        OSTimeDly(OS_TICKS_PER_SEC / 50);               				/*  延时20毫秒去抖动             */
        if ((IO0PIN & Key1) != 0) {                                     /*  按键无效,返回扫描           */
            continue;
        } else {
   	        OSSemPost(Sem);                                             /*  发送信号量                   */
   	        while ((IO0PIN & Key1) == 0) {                              /*  等待按键释放                 */
   	            OSTimeDly(1);                                           /*  延时1个clk                   */
   	        }
   	    }
	}
}
/**********************************************************************************************************
** Function name:			TaskSamp
** Descriptions:			采样任务,对电压数据进行采集
** input parameters:		无
** output parameters:       无
** Returned value:			无 
**********************************************************************************************************/
void TaskSamp (void *pdata)
{
	INT8U  i,err;
	INT32U Temp[10] = {0};
	INT32U TempAll = 0;
	INT32U TempAve = 0;

	pdata = pdata;
   	Mbox  = OSMboxCreate((void *)0);                                  	/*  创建消息邮箱                 */
   	
   	/*
   	 *  ADC初始化
   	 */
   	PCONP |= 1<<12;
   	PINSEL3 |= ((unsigned)0x03)<<30;                                    /*  设置P1.31为AIN5功能          */ 
   	AD0CR = (1<<5)                  |                                   /*  SEL = 0X20,选择通道5         */
   	        ((Fpclk/1000000 - 1)<<8)|                                   /*  CLKDIV= Fpclk/1000000-1,转  */
   	                                                                    /*  换时钟为1MHz                 */
   	        (1<<16)                 |                                   /*  BURST = 1,硬件控制转换操作  */
   	        (0<<17)                 |                                   /*  CLKS = 0,使用11clock转换    */
   	        (1<<21)                 |                                   /*  PDN = 1,正常工作模式        */
   	        (0<<24)                 |                                   /*  START = 0,硬件控制转换      */
   	        (0<<27);

   	while (1) {
	    OSSemPend(Sem,0,&err);                                       	/*  等待信号量                   */
	    TempAll = 0;
	    for (i = 0;i < 10;i++) {
	        while((AD0STAT & (1<<5)) == 0);                             /*  等待AIN5转换结束             */
	        Temp[i] = ADDR5;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
	        Temp[i] = (Temp[i] >> 6) & 0x3ff;
            Temp[i] *= 2500;											/*  参考电压由精密恒压源提供2.5V */
	        Temp[i] /= 1024;
	        TempAll += Temp[i]; 
	    }
	    TempAve = TempAll/10;                                           /*  取采样平均值                 */
	    OSMboxPost(Mbox,(void *)&TempAve);                              /*  发送消息到消息邮箱中         */
	    OSTimeDly(OS_TICKS_PER_SEC/10);                                 /*  延时0.1S                     */
	}
}
/**********************************************************************************************************
** Function name:			TaskDisp
** Descriptions:			显示任务,把通过AD采样得到的数据送到PC机上显示
** input parameters:		无
** output parameters:       无
** Returned value:			无 
**********************************************************************************************************/
void TaskDisp (void *pdata)
{
	INT8U err;
    INT32U tp;
    char str[50];                                                       /*  存储送显示数据的数组         */
	pdata = pdata;
   	sprintf(str,"系统启动......\r\n");                  
   	UART0_SendStr(str);                                                 /*  系统启动提示信息             */
   	while (1) {
   	    tp = * (INT32U *)OSMboxPend(Mbox,0,&err);                       /*  获得消息邮箱中的消息         */
   	    sprintf(str,"ADC采样结果为 %d mv \r\n",tp);                     /*  把送显示数据发送到数组中     */
   	    UART0_SendStr(str);                                             /*  把采样结果发送到上位机显示   */
	}
}
/**********************************************************************************************************
  END FILE
**********************************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -