完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
经过几天的学习,主要是看原子团队的freeRTOS教程,感觉对freeRTOS有了初步了解,打算并尝试着移植到自己的工程中去。
参考左工的例程,创建了工程,并在之前的产品上实现了按键操作LED灯亮灭,初步点灯成功。 感谢原子团队!感谢左工!感谢freeRTOS团队! [C] 纯文本查看 复制代码 #include "STM32f10x.h"#include "freeRTOS.h"#include "task.h"#include "led_task.h"#include "key_task.h"int main(void){ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); /* Add your application code here */led_task_create();key_task_create();vTaskStartScheduler(); /* Infinite loop */while (1){}} [C] 纯文本查看 复制代码 #include "key_task.h"#include "key.h"#include "led_task.h"//KEY任务优先级 1#define KEY_TASK_PRIO8//任务堆栈大小#define KEY_STK_SIZE 100 //任务句柄TaskHandle_t KEYTask_Handler;//声明void key_task(void *pvParameters);void key_task_create(void){taskENTER_CRITICAL();key_io_init();key_buf_init();xTaskCreate((TaskFunction_t )key_task, //任务函数名 (const char* )"key_task", //任务名 (uint16_t )KEY_STK_SIZE, //堆栈大小 (void* )NULL, //参数 (UBaseType_t )KEY_TASK_PRIO, //任务优先级 (TaskHandle_t* )&KEYTask_Handler); //任务句柄taskEXIT_CRITICAL();}void key_task(void *pvParameters){uint8_t key_data; while(1) {key_scan();if (KeyData){key_data = KeyData<<1;xQueueSend(Led_Queue,&key_data,10);key_data = 0;KeyData = 0;}vTaskDelay(1); }} [AppleScript] 纯文本查看 复制代码 #include "led.h"#include "led_task.h"//LED任务优先级 1#define LED_TASK_PRIO2//任务堆栈大小#define LED_STK_SIZE 50 //任务句柄TaskHandle_t LEDTask_Handler;//声明void led_task(void *pvParameters);#define LED_QUEUE_NUM 4QueueHandle_t Led_Queue;void led_task_create(void){taskENTER_CRITICAL();led_io_init();Led_Queue=xQueueCreate(LED_QUEUE_NUM,sizeof(uint8_t)); xTaskCreate((TaskFunction_t )led_task, //任务函数名 (const char* )"led_task", //任务名 (uint16_t )LED_STK_SIZE, //堆栈大小 (void* )NULL, //参数 (UBaseType_t )LED_TASK_PRIO, //任务优先级 (TaskHandle_t* )&LEDTask_Handler); //任务句柄taskEXIT_CRITICAL();}void led_task(void *pvParameters){uint8_t ledOutData=0;uint8_t ledFlashData=0;uint8_t ledQueueRece;// taskENTER_CRITICAL();// led_io_init();// taskEXIT_CRITICAL(); while(1) {ledFlashData ^= 0x01;if (xQueueReceive(Led_Queue,&ledQueueRece,0)){ledOutData = (ledQueueRece&0xfe)|(ledFlashData&0x01);}else{ledOutData = (ledOutData&0xfe)|(ledFlashData&0x01);}led_switch(ledOutData);vTaskDelay(20); }} |
|
相关推荐
4个回答
|
|
drivers目录下是原来产品的文件,系统直接引用了。不过按键里面用到了全局变量,回头要处理一下。
万里长征的第一步终于走出来了,还是值得高兴一下下的PS:貌似主贴里没有感谢意法团队,在这补上吧,虽然使用意法的产品是付费了的。 |
|
|
|
客气了,恭喜用起来了
|
|
|
|
只是初步了解了一些,路还很长啊
|
|
|
|
恭喜恭喜
|
|
|
|
只有小组成员才能发言,加入小组>>
765 浏览 0 评论
1144 浏览 1 评论
2526 浏览 5 评论
2857 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2705 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1035浏览 3评论
183浏览 2评论
450浏览 2评论
362浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
447浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-14 00:28 , Processed in 1.131117 second(s), Total 85, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号