找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2158|回复: 6
收起左侧

STM32单片机at24c32调试代码实现

[复制链接]
ID:7209 发表于 2023-4-4 21:23 | 显示全部楼层 |阅读模式
最近看了网上有对AT24C32 来进行测试的
也找了块片子测试了一下
测试成功发上来给用到的小伙伴
有错误一定吐草一个
好改正错误
共同学习

单片机源程序如下:

  1. #include "delay.h"
  2. #include "sys.h"
  3. #include "usart.h"
  4. #include "includes.h"
  5. #include "ds1307.h"
  6. #include "at24c32.h"



  7. char WIFI_DATE[20] = {0}; //WIFI 接收的数据




  8. //START 任务
  9. //设置任务优先级
  10. #define START_TASK_PRIO                        10           ///开始任务的优先级为最低
  11. #define START_STK_SIZE                        512          //设置任务堆栈大小
  12. OS_STK START_TASK_STK[START_STK_SIZE];   //任务任务堆栈
  13. void start_task(void *pdata);            //任务函数




  14. //LED0任务
  15. #define LED0_TASK_PRIO                        4            //设置任务优先级
  16. #define LED0_STK_SIZE                        516             //设置任务堆栈大小
  17. OS_STK LED0_TASK_STK[LED0_STK_SIZE];     //任务堆栈
  18. void led0_task(void *pdata);             //任务函数




  19. //LED1任务
  20. #define LED1_TASK_PRIO                        5            //设置任务优先级
  21. #define LED1_STK_SIZE                        256            //设置任务堆栈大小
  22. OS_STK LED1_TASK_STK[LED1_STK_SIZE];     //任务堆栈
  23. void led1_task(void *pdata);             //任务函数












  24. int main(void)
  25. {
  26.         delay_init();                     //延时初始化
  27.         //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断分组配置
  28.         uart_init(115200);                //串口波特率设置
  29.   
  30.         OSInit();                                      //UCOS初始化
  31.                
  32.         OSTaskCreate(  start_task,
  33.                        (void*)0,
  34.                                                                  (OS_STK*)&START_TASK_STK[START_STK_SIZE-1],
  35.                                                                   START_TASK_PRIO
  36.                                                          );                   //创建开始任务
  37.         OSStart();                               //开始任务
  38. }

  39. //开始任务
  40. void start_task(void *pdata)
  41. {
  42.         OS_CPU_SR cpu_sr=0;
  43.         pdata=pdata;
  44.         OSStatInit();  //开启统计任务
  45.         
  46.         OS_ENTER_CRITICAL();  //进入临界区(关闭中断)
  47.         
  48.         OSTaskCreate(led0_task,(void*)0,(OS_STK*)&LED0_TASK_STK[LED0_STK_SIZE-1],LED0_TASK_PRIO);//创建LED0任务
  49.         OSTaskCreate(led1_task,(void*)0,(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],LED1_TASK_PRIO);//创建LED1任务

  50.         OSTaskSuspend(START_TASK_PRIO);//挂起开始任务
  51.         OS_EXIT_CRITICAL();  //退出临界区(开中断)
  52. }










  53. //LED0任务
  54. void led0_task(void *pdata)
  55. {        
  56.         
  57.         OS_CPU_SR cpu_sr=0;
  58.         OS_ENTER_CRITICAL();        //进入临界区(关闭中断)
  59.   DS1307_GPIO_Init();
  60.         OS_EXIT_CRITICAL();                //退出临界区(开中断)
  61.         while(1)
  62.         {
  63.                

  64.          

  65.            DS1307_Read();
  66.                
  67.                
  68.                 OSTimeDlyHMSM(0,0,10,0); //时 分 秒 毫秒
  69.         }
  70. }

  71. //LED1任务
  72. void led1_task(void *pdata)
  73. {
  74.                 OS_CPU_SR cpu_sr=0;
  75.   unsigned char dat;
  76.           OS_ENTER_CRITICAL();        //进入临界区(关闭中断)
  77.         //AT24C32_Init();
  78.                 OS_EXIT_CRITICAL();                //退出临界区(开中断)
  79.         while(1)
  80.         {
  81.                
  82.         
  83.          
  84.                 dat = at24cxx_Read_Data(0x0001);
  85.                                 
  86.                 printf("%d\r\n",dat);
  87.                 printf("LED1 \r\n");

  88.         

  89.                 OSTimeDlyHMSM(0,0,10,0); //时 分 秒 毫秒
  90.         }
  91. }
复制代码

所有资料51hei附件下载:
AT24C32代码.7z (289.8 KB, 下载次数: 29)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:319585 发表于 2023-4-5 06:31 来自手机 | 显示全部楼层
这个代码写的很不错的,以后我的代码也用os重写。
回复

使用道具 举报

ID:291668 发表于 2023-4-5 09:18 | 显示全部楼层
是用ucosiii么,跟传统的寄存器版本不一样啊?
回复

使用道具 举报

ID:7209 发表于 2023-4-5 20:39 | 显示全部楼层
li64331218 发表于 2023-4-5 09:18
是用ucosiii么,跟传统的寄存器版本不一样啊?

一样,没啥区别,单独拿出来 .c   .h文件,一样用裸机
没区别
ucos 不建议 学习了,
直接上Linux 把
回复

使用道具 举报

ID:291668 发表于 2023-4-8 11:29 | 显示全部楼层
wxs732 发表于 2023-4-5 20:39
一样,没啥区别,单独拿出来 .c   .h文件,一样用裸机
没区别
ucos 不建议 学习了,

stm32 不能用Linux吧?资源不够吧?现在ucosIII倒是挺火的。
回复

使用道具 举报

ID:7209 发表于 2023-4-9 12:57 | 显示全部楼层
应该是 我表达的不够清楚

stm32 确实不够上linux   ,
我想说,ucos ii 这样的系统不要过多纠结 , 还是直接学习linux   
II  或 iii  都不错 , 都值得学习
回复

使用道具 举报

ID:291668 发表于 2023-4-9 15:11 | 显示全部楼层
wxs732 发表于 2023-4-9 12:57
应该是 我表达的不够清楚

stm32 确实不够上linux   ,

谢谢建议!
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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