OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5996|回复: 25

UCOSii移植问题

[复制链接]

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
发表于 2014-8-2 16:59:40 | 显示全部楼层 |阅读模式
5金钱
我想把ADS1115程序和bottom按键程序加在一起,但是总是卡死;

代码:
#include <string.h>
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "TFT_touch.h"
#include "pit.h"
#include "GUI.h"
#include "WM.h"
#include "BUTTON.h"
#include"dac.h"
#include"key.h"
#include "adc.h"
#include "timer.h"
#include "led.h"
#include "ads1115.h"
#include "TWI.h"
//#include"GUIVal.h"
#include<math.h>
#include "includes.h"

#define START_TASK_PRIO       4 //开始任务的优先级设置为最低
//设置任务堆栈大小
#define START_STK_SIZE   256
//创建任务堆栈空间
OS_STK START_TASK_STK[START_STK_SIZE];
//任务函数接口
void start_task(void *pdata);
    
//key任务
//设置任务优先级
#define LED1_TASK_PRIO       2 
//设置任务堆栈大小
#define LED1_STK_SIZE       64
//创建任务堆栈空间
OS_STK LED1_TASK_STK[LED1_STK_SIZE];
//任务函数接口
void key_task(void *pdata);


//ads任务
//设置任务优先级
#define LED2_TASK_PRIO       3 
//设置任务堆栈大小
#define LED2_STK_SIZE   64
//创建任务堆栈空间
OS_STK LED2_TASK_STK[LED2_STK_SIZE];
//任务函数接口
void ads_task(void *pdata);

BUTTON_Handle hobj5;
BUTTON_Handle hobj6;
int left=0;
int rightt=0;
extern const GUI_BITMAP bmHINATA;
extern const GUI_BITMAP bmNARUTO;
extern u16 value;

int main(void)
{
Stm32_Clock_Init(9);  //系统时钟设置
delay_init(72);
uart_init(72,9600);
TWI_Initialize();
LED_Init();
GUI_Init();
TP_Init(); 
GUI_Clear(); //按指定颜色清屏
TIM3_Int_Init(99,7199);
OSInit();   
  OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO );//创建起始任务
OSStart();
return 0;

}
void start_task(void *pdata)
{
    OS_CPU_SR cpu_sr=0;
pdata = pdata; 
// OSStatInit(); //初始化统计任务.这里会延时1秒钟左右
  OS_ENTER_CRITICAL(); //进入临界区(无法被中断打断)    
  OSTaskCreate(key_task,(void *)0,(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],LED1_TASK_PRIO);   
  OSTaskCreate(ads_task,(void *)0,(OS_STK*)&LED2_TASK_STK[LED2_STK_SIZE-1],LED2_TASK_PRIO);   
OSTaskSuspend(START_TASK_PRIO); //挂起起始任务.
OS_EXIT_CRITICAL(); //退出临界区(可以被中断打断)
}


void key_task(void *pdata)
{

GUI_SetColor(GUI_RED);
  GUI_SetFont(&GUI_FontComic24B_ASCII);
hobj5=BUTTON_Create(50,140,60,40,5,WM_CF_SHOW);
BUTTON_SetText(hobj5, "NO5");
hobj6=BUTTON_Create(120,140,60,40,6,WM_CF_SHOW);
BUTTON_SetText(hobj6, "NO6");
  while(1)
  {
if(GUI_WaitKey()==5)  
{
 LED0=!LED0;
}
OSTimeDlyHMSM(0,0,0,30);
}

}

//LED2任务
void ads_task(void *pdata)
{  
    float ADS_Value;
u32 temp;

while(1)
{
 GUI_SetColor(GUI_RED);
   ADS_Value = display_ADS(50);
 temp= ADS_Value ;
 GUI_DispDecAt(temp,30,70,1);
 ADS_Value -=  temp;
 ADS_Value *= 1000;
      GUI_DispDecAt((ADS_Value),70,70,3);
  OSTimeDlyHMSM(0,0,0,35);
}
}

最佳答案

查看完整内容[请看2#楼]

回复【21楼】正点原子: --------------------------------- 弄好啦,原子哥,示波器的问题
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
 楼主| 发表于 2014-8-2 16:59:41 | 显示全部楼层
回复【21楼】正点原子:
---------------------------------
弄好啦,原子哥,示波器的问题
回复

使用道具 举报

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
 楼主| 发表于 2014-8-2 16:59:41 | 显示全部楼层
ADS1115程序

ADS1115程序.zip

3.95 MB, 下载次数: 345

回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-2 22:55:00 | 显示全部楼层
把堆栈设置大一点
ads_task的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
 楼主| 发表于 2014-8-3 14:06:28 | 显示全部楼层
回复【2楼】正点原子:
------------------------------
原子哥,怎么还是不行啊,只有按键有用,ADS1115程序没用啊


#define START_TASK_PRIO       7 //开始任务的优先级设置为最低
#define START_STK_SIZE   512
OS_STK START_TASK_STK[START_STK_SIZE];
void start_task(void *pdata);

//key任务
#define KEY_TASK_PRIO        2
#define KEY_STK_SIZE        128
OS_STK KEY_TASK_STK[KEY_STK_SIZE];
void key_task(void *pdata);

//ADS1115
#define ADS_TASK_PRIO        4 
#define ADS_STK_SIZE   256
OS_STK ADS_TASK_STK[ADS_STK_SIZE];
void ads_task(void *pdata);

此时下面两个任务都没加 OSTimeDlyHMSM(0,0,0,500);函数

如果都加了该函数,时间不同的话,还是一个有用,一个没用
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-4 00:01:30 | 显示全部楼层
那就可能是其它地方问题了,慢慢调试。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
 楼主| 发表于 2014-8-4 17:00:39 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
恩恩,弄好啦
原子哥,那个我用按键控制占空比,它的负脉冲电压不断增加,怎么回事啊?
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1843
金钱
1843
注册时间
2014-6-27
在线时间
983 小时
发表于 2014-8-4 17:06:08 | 显示全部楼层
和输出的模式有关,设置为另一种模式就行了。
回复

使用道具 举报

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
 楼主| 发表于 2014-8-4 17:16:42 | 显示全部楼层
回复【6楼】TinyBoy:
---------------------------------
请问一下,是在哪儿改啊
回复

使用道具 举报

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
 楼主| 发表于 2014-8-4 17:17:24 | 显示全部楼层
回复【6楼】TinyBoy:
---------------------------------
void TIM3_PWM_Init(u16 arr,u16 psc)
{  
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
TIM_OCInitTypeDef  TIM_OCInitStructure;


RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能定时器3时钟
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO, ENABLE);  //使能GPIO外设和AFIO复用功能模块时钟

GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); //Timer3部分重映射  TIM3_CH2->B5    
 
   //设置该引脚为复用输出功能,输出TIM3 CH2的PWM脉冲波形 GPIOB.5
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //TIM_CH2
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO
 
   //初始化TIM3
TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位

//初始化TIM3 Channel2 WM模式  
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //选择定时器模式:TIM脉冲宽度调制模式2
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高
TIM_OC2Init(TIM3, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM3 OC2

TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);  //使能TIM3在CCR2上的预装载寄存器
 
TIM_Cmd(TIM3, ENABLE);  //使能TIM3


}
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1843
金钱
1843
注册时间
2014-6-27
在线时间
983 小时
发表于 2014-8-4 17:20:57 | 显示全部楼层
我的是寄存器版的,你的应该是TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高,这行
回复

使用道具 举报

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
 楼主| 发表于 2014-8-4 17:26:51 | 显示全部楼层
回复【9楼】TinyBoy:
---------------------------------
还是不行啊
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1843
金钱
1843
注册时间
2014-6-27
在线时间
983 小时
发表于 2014-8-4 17:30:11 | 显示全部楼层
不行你可以这样,你想要20%,你就把你给的用个变量来代替,比如x,那么(100-x)放进寄存器里面去,就可以得到你想要的x%了。
回复

使用道具 举报

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
 楼主| 发表于 2014-8-4 17:34:12 | 显示全部楼层
回复【11楼】TinyBoy:
---------------------------------
我想说的是单片机中产生的怎么会有负脉冲呢,而且还随着占空比的改变而改变
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1843
金钱
1843
注册时间
2014-6-27
在线时间
983 小时
发表于 2014-8-4 17:37:28 | 显示全部楼层
有杂波?其他问题吧,你看下硬件有没有问题。
回复

使用道具 举报

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
 楼主| 发表于 2014-8-4 17:39:27 | 显示全部楼层
回复【13楼】TinyBoy:
---------------------------------
它负的电压可以达到3.几伏
不是杂波的问题
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1843
金钱
1843
注册时间
2014-6-27
在线时间
983 小时
发表于 2014-8-4 17:41:16 | 显示全部楼层
就是说PWM波形不漂亮嘛,有负脉冲出现,对吧。
回复

使用道具 举报

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
 楼主| 发表于 2014-8-4 17:42:09 | 显示全部楼层
回复【15楼】TinyBoy:
---------------------------------
可以那么说
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1843
金钱
1843
注册时间
2014-6-27
在线时间
983 小时
发表于 2014-8-4 17:44:48 | 显示全部楼层
不接任何外接电路,用示波器看看波形怎样?最好弄个图看看。
回复

使用道具 举报

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
 楼主| 发表于 2014-8-4 18:04:41 | 显示全部楼层
回复【17楼】TinyBoy:
---------------------------------
还是不行啊
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1843
金钱
1843
注册时间
2014-6-27
在线时间
983 小时
发表于 2014-8-4 19:59:37 | 显示全部楼层
直接点IO,波形也很丑陋?先调整下示波器的波形先,用示波器自带的波形先调整没问题了,再测。
回复

使用道具 举报

26

主题

467

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
876
金钱
876
注册时间
2013-10-3
在线时间
23 小时
发表于 2014-8-8 18:39:25 | 显示全部楼层
朋友,,能否把你的ADS1115部分的代码共享出来借我参考一下呢???谢谢了。。非常感谢。。。。
避免犯错本是错误所在,我错故我在……
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-8 22:36:46 | 显示全部楼层
回复【5楼】yysforever:
---------------------------------
负脉冲?
上个波形看看.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
 楼主| 发表于 2014-8-9 09:04:02 | 显示全部楼层
回复【20楼】zhang164534:
---------------------------------
好的啊
回复

使用道具 举报

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
 楼主| 发表于 2014-8-9 09:05:51 | 显示全部楼层
ADS1115程序
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-9 23:16:15 | 显示全部楼层
回复【25楼】yysforever:
---------------------------------
谢谢分享
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-4 02:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表