标题:
STM32F103R8t6 FreeRTOS工程adc+flash模拟EEPROM源程序
[打印本页]
作者:
过往云烟
时间:
2019-4-9 14:03
标题:
STM32F103R8t6 FreeRTOS工程adc+flash模拟EEPROM源程序
STM32单片机源程序如下:
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "FreeRTOS.h"
#include "task.h"
#include "ADC.h"
#include "74HC595.h"
#include "key.h"
#include "stmflash.h"
//const
u8 TEXT_Buffer[]={"0123456789"};
//任务优先级
#define START_TASK_PRIO 1
//任务堆栈大小
#define START_STK_SIZE 128
//任务句柄
TaskHandle_t StartTask_Handler;
//任务函数
void start_task(void *pvParameters);
//任务优先级
#define LED0_TASK_PRIO 2
//任务堆栈大小
#define LED0_STK_SIZE 50
//任务句柄
TaskHandle_t LED0Task_Handler;
//任务函数
void led0_task(void *pvParameters);
//任务优先级
#define LED1_TASK_PRIO 3
//任务堆栈大小
#define LED1_STK_SIZE 50
//任务句柄
TaskHandle_t LED1Task_Handler;
//任务函数
void led1_task(void *pvParameters);
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4
delay_init(); //延时函数初始化
uart_init(115200); //初始化串口
LED_Init(); //初始化LED
My_ADC_Init();
Display_74HC595_Init();
KEY_Init();
if(EEPROM_dat1.MASK != 0x50)
{
EEPROM_dat1.F_1=0;
EEPROM_dat1.F_2=0;
EEPROM_dat1.GL=0;
EEPROM_dat1.P_offset=0;
EEPROM_dat1.P_1=0;
EEPROM_dat1.P_2=0;
EEPROM_dat1.SL=0;
EEPROM_dat1.MASK = 0x50;
save_eeprom();
}
//创建开始任务
xTaskCreate((TaskFunction_t )start_task, //任务函数
(const char* )"start_task", //任务名称
(uint16_t )START_STK_SIZE, //任务堆栈大小
(void* )NULL, //传递给任务函数的参数
(UBaseType_t )START_TASK_PRIO, //任务优先级
(TaskHandle_t* )&StartTask_Handler); //任务句柄
vTaskStartScheduler(); //开启任务调度
}
//开始任务任务函数
void start_task(void *pvParameters)
{
taskENTER_CRITICAL(); //进入临界区
//创建LED0任务
xTaskCreate((TaskFunction_t )led0_task,
(const char* )"led0_task",
(uint16_t )LED0_STK_SIZE,
(void* )NULL,
(UBaseType_t )LED0_TASK_PRIO,
(TaskHandle_t* )&LED0Task_Handler);
//创建LED1任务
xTaskCreate((TaskFunction_t )led1_task,
(const char* )"led1_task",
(uint16_t )LED1_STK_SIZE,
(void* )NULL,
(UBaseType_t )LED1_TASK_PRIO,
(TaskHandle_t* )&LED1Task_Handler);
vTaskDelete(StartTask_Handler); //删除开始任务
taskEXIT_CRITICAL(); //退出临界区
}
int times=0;
//LED0任务函数
/*
修改之后保存,再读;如果修改之后直接读会覆盖掉修改的内容。
*/
void led0_task(void *pvParameters)
{
// u8 datatemp[SIZE];
int i;
while(1)
{
// LED0=~LED0;
vTaskDelay(300);
if(KEY3==0)
{
EEPROM_dat1.F_1++;
vTaskDelay(100);
}
// times--;
//
// //Half_show(times);
// printf("KEY_times:%d\r\n",times);
if(KEY1==0)//KEY1??,??STM32 FLASH
{
save_eeprom();
printf("\r\nsave.............\r\n");
}
if(KEY2==0) //KEY0??,????????
{
read_eeprom();
printf("F_1:%x ",EEPROM_dat1.F_1);//????????
}
}
}
//LED1任务函数
void led1_task(void *pvParameters)
{
uint16_t i=0;
double k=0.02;
while(1)
{
LED1=0;
vTaskDelay(100);
LED1=1;
vTaskDelay(100);
i = ADC_Value();
i = i * (33000/4095);
// printf("ADC_Vaule:%d\r\n",i);
display_number(i/100,2);
// printf("%lf\r\n",k);
}
}
复制代码
所有资料51hei提供下载:
FreeRTOS_DEMO 20190109V1.0.7z
(319.74 KB, 下载次数: 159)
2019-4-9 19:22 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
淚眸
时间:
2020-7-18 15:59
我想问一下,确定这个是R8T6么?
作者:
淚眸
时间:
2020-7-18 16:01
我想问一下确定这个是r8t6么?正点原子103的板子没有用这个芯片的啊
作者:
bouna
时间:
2021-5-22 03:09
thank u very much, it's so good
作者:
夜空之巅
时间:
2021-5-22 09:51
bouna 发表于 2021-5-22 03:09
thank u very much, it's so good
还有老外?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1