標題:
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"};
//任務優(yōu)先級
#define START_TASK_PRIO 1
//任務堆棧大小
#define START_STK_SIZE 128
//任務句柄
TaskHandle_t StartTask_Handler;
//任務函數(shù)
void start_task(void *pvParameters);
//任務優(yōu)先級
#define LED0_TASK_PRIO 2
//任務堆棧大小
#define LED0_STK_SIZE 50
//任務句柄
TaskHandle_t LED0Task_Handler;
//任務函數(shù)
void led0_task(void *pvParameters);
//任務優(yōu)先級
#define LED1_TASK_PRIO 3
//任務堆棧大小
#define LED1_STK_SIZE 50
//任務句柄
TaskHandle_t LED1Task_Handler;
//任務函數(shù)
void led1_task(void *pvParameters);
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//設置系統(tǒng)中斷優(yōu)先級分組4
delay_init(); //延時函數(shù)初始化
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();
}
//創(chuàng)建開始任務
xTaskCreate((TaskFunction_t )start_task, //任務函數(shù)
(const char* )"start_task", //任務名稱
(uint16_t )START_STK_SIZE, //任務堆棧大小
(void* )NULL, //傳遞給任務函數(shù)的參數(shù)
(UBaseType_t )START_TASK_PRIO, //任務優(yōu)先級
(TaskHandle_t* )&StartTask_Handler); //任務句柄
vTaskStartScheduler(); //開啟任務調(diào)度
}
//開始任務任務函數(shù)
void start_task(void *pvParameters)
{
taskENTER_CRITICAL(); //進入臨界區(qū)
//創(chuàng)建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);
//創(chuàng)建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(); //退出臨界區(qū)
}
int times=0;
//LED0任務函數(shù)
/*
修改之后保存,再讀;如果修改之后直接讀會覆蓋掉修改的內(nèi)容。
*/
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任務函數(shù)
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, 下載次數(shù): 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 發(fā)表于 2021-5-22 03:09
thank u very much, it's so good
還有老外?
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1