初级会员

- 积分
- 88
- 金钱
- 88
- 注册时间
- 2015-5-26
- 在线时间
- 0 小时
|

楼主 |
发表于 2015-7-22 09:29:10
|
显示全部楼层
回复【7楼】正点原子:
------------------------------
#include "Temperature.h"
void UCOS_INIT()
{
RCC_ClocksTypeDef RCC_Clocks;
u32 clock=0;
RCC_GetClocksFreq(&RCC_Clocks);
clock=RCC_Clocks.HCLK_Frequency;
SysTick_Config(clock/OS_TICKS_PER_SEC); //??10Ms????
}
void Temperature_init()
{
ADC_InitTypeDef ADC_Inits;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
ADC_Inits.ADC_ContinuousConvMode=DISABLE;
ADC_Inits.ADC_DataAlign=ADC_DataAlign_Right;
ADC_Inits.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;
ADC_Inits.ADC_Mode=ADC_Mode_Independent;
ADC_Inits.ADC_NbrOfChannel=1;
ADC_Inits.ADC_ScanConvMode=DISABLE;
ADC_Init(ADC1,&ADC_Inits);
ADC_TempSensorVrefintCmd(ENABLE);
ADC_Cmd(ADC1,ENABLE);
ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));
}
u8 GetTemperature()
{
ADC_RegularChannelConfig(ADC1,ADC_Channel_16,1,ADC_SampleTime_239Cycles5);
ADC_SoftwareStartConvCmd(ADC1,ENABLE);
while(!(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)));
return(ADC_GetConversionValue(ADC1));
}
void usart_init()
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
USART_InitStructure.USART_BaudRate = baud;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No ;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Tx;
USART_Init(USART1, &USART_InitStructure);
USART_Cmd(USART1, ENABLE);
}
//int fputc(int ch, FILE *f)
//{
// while((USART1->SR&0X40)==0);
// USART1->DR = (u8)ch;
// return ch;
//}
int fputc(int ch, FILE *f)
{
USART_SendData(USART1, (uint8_t) ch);
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) {}
return ch;
}
#include "stm32f10x.h"
#include "ucos_ii.h"
#include "Temperature.h"
#define TASK_STK_SIZE 512
OS_STK TASK_ONE[TASK_STK_SIZE];
OS_STK TASK_TWO[TASK_STK_SIZE];
OS_STK TASK_START[TASK_STK_SIZE];
void task_one(void *p);
void task_two(void *p);
void task_start(void *p);
OS_EVENT *message;
u8 Temp_value=0;
INT8U err;
int main()
{
usart_init();
printf("???ò??????\r\n");
UCOS_INIT();
Temperature_init();
printf("????????????\r\n");
OSInit();
printf("???????ê??\r\n");
message=OSSemCreate(1);
OSTaskCreate(task_start,NULL,(OS_STK *)&TASK_START[TASK_STK_SIZE-1],(INT8U)0);
OSStart();
}
void task_start(void *p)
{
p=p;
OSTaskCreate(task_one,NULL,(OS_STK *)&TASK_ONE[TASK_STK_SIZE-1],1);
OSTaskCreate(task_two,NULL,(OS_STK *)&TASK_TWO[TASK_STK_SIZE-1],2);
printf("???¨?ê????\r\n");
while(1)
{
OSTimeDlyHMSM(0,0,2,0);
}
}
void task_one(void *p)
{
p=p;
while(1)
{
OSSemPend(message,0,&err);
Temp_value=GetTemperature();
OSTimeDlyHMSM(0,0,1,0);
err=OSSemPost(message);
}
}
void task_two(void *p)
{
p=p;
while(1)
{
OSSemPend(message,0,&err);
printf("?±?°????????%d\r\n",Temp_value);
OSTimeDlyHMSM(0,0,1,0);
err=OSSemPost(message);
}
}
这是我的程序,按你的也看了,但是我的这个就是打印不出来,不知道为什么?请原子哥帮忙看看?谢谢了 |
|