搜索
热搜: ROHM 模拟 车载
查看: 2480|回复: 1

【罗姆传感器】+STM32F103+FreeRTOS 移植

[复制链接]

该用户从未签到

18

主题

733

帖子

0

精华

金牌会员

最后登录
2024-4-26
发表于 2018-11-29 19:35:56 | 显示全部楼层 |阅读模式
本帖最后由 xiaoshen-372360 于 2018-12-1 15:38 编辑

由于自己的板子还有几个器件没到,所以先把程序的环境搭建起来,自己先移植了Free-RTOS,后面多任务处理起来就方便的多了,下面就开始贴代码了。
另外说一下,如果谁需要PCB空板的话可以给我说,还有三块空板,免费送啦!邮费自理哈!

自己的板子的LED连接的引脚如下图所示
1.png
代码中值做了LED的闪烁,最简单的例子,简单易懂。
  1. /*=====================================================*/

  2. /*=========================================*/
  3. #include "FreeRTOS.h"
  4. #include "task.h"
  5. #include "queue.h"
  6. /*=========================================*/
  7. #include "stm32f10x.h"
  8. //--¶¨ÒåLEDµÄ¶Ë¿ÚºÅºÍÒý½Å
  9. //--LED1
  10. #define LED1_Port GPIOB
  11. #define LED1_Pin GPIO_Pin_2
  12. //--LED2
  13. #define LED2_Port GPIOA
  14. #define LED2_Pin GPIO_Pin_12
  15. //--LED3
  16. #define LED3_Port GPIOA
  17. #define LED3_Pin GPIO_Pin_15
  18. void PortInit()
  19. {
  20.                 GPIO_InitTypeDef GPIO_InitStructure;
  21.                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |        RCC_APB2Periph_GPIOC, ENABLE );
  22.     //--LED2 PA12 LED3 PA15
  23.                 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_15 ;
  24.                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  25.                 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  26.                 GPIO_Init( GPIOA, &GPIO_InitStructure );
  27.           //--LED 1--PB2
  28.           GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 ;
  29.                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  30.                 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  31.                 GPIO_Init( GPIOB, &GPIO_InitStructure );
  32. }
  33. //
  34. void RCC_INIT_AAA( void )
  35. {
  36.         /* Start with the clocks in their expected state. */
  37.         RCC_DeInit();

  38.         /* Enable HSE (high speed external clock). */
  39.         RCC_HSEConfig( RCC_HSE_ON );

  40.         /* Wait till HSE is ready. */
  41.         while( RCC_GetFlagStatus( RCC_FLAG_HSERDY ) == RESET )
  42.         {
  43.                
  44.         }

  45.         /* 2 wait states required on the flash. */
  46.         *( ( unsigned long * ) 0x40022000 ) = 0x02;

  47.         /* HCLK = SYSCLK */
  48.         RCC_HCLKConfig( RCC_SYSCLK_Div1 );

  49.         /* PCLK2 = HCLK */
  50.         RCC_PCLK2Config( RCC_HCLK_Div1 );

  51.         /* PCLK1 = HCLK/2 */
  52.         RCC_PCLK1Config( RCC_HCLK_Div2 );

  53.         /* PLLCLK = 8MHz * 9 = 72 MHz. */
  54.         RCC_PLLConfig( RCC_PLLSource_HSE_Div1, RCC_PLLMul_9 );

  55.         /* Enable PLL. */
  56.         RCC_PLLCmd( ENABLE );

  57.         /* Wait till PLL is ready. */
  58.         while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
  59.         {
  60.         }

  61.         /* Select PLL as system clock source. */
  62.         RCC_SYSCLKConfig( RCC_SYSCLKSource_PLLCLK );

  63.         /* Wait till PLL is used as system clock source. */
  64.         while( RCC_GetSYSCLKSource() != 0x08 )
  65.         {
  66.         }

  67. //        /* Enable GPIOA, GPIOB, GPIOC, GPIOD, GPIOE and AFIO clocks */
  68. //        RCC_APB2PeriphClockCmd(        RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |RCC_APB2Periph_GPIOC
  69. //                                                        | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE );

  70. //        /* SPI2 Periph clock enable */
  71. //        RCC_APB1PeriphClockCmd( RCC_APB1Periph_SPI2, ENABLE );


  72. //        /* Set the Vector Table base address at 0x08000000 */
  73. //        NVIC_SetVectorTable( NVIC_VectTab_FLASH, 0x0 );

  74. //        NVIC_PriorityGroupConfig( NVIC_PriorityGroup_4 );

  75. //        /* Configure HCLK clock as SysTick clock source. */
  76. //        SysTick_CLKSourceConfig( SysTick_CLKSource_HCLK );
  77. }

  78. /*---------------------ÈÎÎñÒ»-----------------------  */
  79. void Task_LED1( void *pvParameters )
  80. {
  81.          while(1)
  82.          {
  83.                  GPIO_SetBits(LED1_Port,LED1_Pin );
  84.      vTaskDelay(400);/*---¶¨ÒåÑÓʱ500ms----*/
  85.            GPIO_ResetBits(LED1_Port,LED1_Pin  );
  86.      vTaskDelay(400);/*---¶¨ÒåÑÓʱ500ms----*/
  87.          }
  88. }
  89. /*---------------------ÈÎÎñ¶þ------------------------  */
  90.   void Task_LED2( void *pvParameters )
  91. {
  92.           while(1)
  93.          {
  94.          GPIO_SetBits(LED2_Port,LED2_Pin );
  95.     vTaskDelay(100);/*---¶¨ÒåÑÓʱ500ms----*/
  96.          GPIO_ResetBits(LED2_Port,LED2_Pin);
  97.     vTaskDelay(100);/*---¶¨ÒåÑÓʱ500ms----*/
  98. }
  99. }
  100.   /*---------------------ÈÎÎñ¶þ------------------------  */
  101.   void Task_LED3( void *pvParameters )
  102. {
  103.           while(1)
  104.          {
  105.          GPIO_SetBits(LED3_Port,LED3_Pin);
  106.     vTaskDelay(50);/*---¶¨ÒåÑÓʱ500ms----*/
  107.          GPIO_ResetBits(LED3_Port,LED3_Pin);
  108.     vTaskDelay(50);/*---¶¨ÒåÑÓʱ500ms----*/
  109. }
  110. }
  111. /*---------------------------------------------------------*/
  112. int main(void)
  113. {
  114.         PortInit();
  115.         /*------´´½¨ÈÎÎñ------*/
  116.         /*------²ÎÊý˵Ã÷£º1£ºÈÎÎñÃû³Æ£º¼´ÔÚ³ÌÐòÖк¯ÊýµÄÃû³Æ 2£ºÔÚÈÎÎñ¹ÜÀíÖеÄÃû³ÆÆäʵ²¢ÎÞÒâÒå  3£º¶ÑÕ»Éî¶È  4£º  5£ºÓÅÏȼ¶£º6£º  */
  117.          
  118.         xTaskCreate( Task_LED1, "LED1", 1024, NULL, 4, NULL );
  119.         xTaskCreate( Task_LED2, "LED2", 1024, NULL, 5, NULL );
  120.         xTaskCreate( Task_LED3, "LED3", 1024, NULL, 6, NULL );
  121. //        /*-----ÈÎÎñ´´½¨ÈÎÎñ³É-----*/

  122.         /*===========================================================*/
  123.         /*-----¿ªÊ¼ÈÎÎñɨÃè-----*/
  124.                 vTaskStartScheduler();
  125.             while(1)
  126.                         {                        
  127.                                  GPIO_SetBits(GPIOC,GPIO_Pin_3);
  128.                                  vTaskDelay(500);/*---¶¨ÒåÑÓʱ500ms----*/
  129.                                  GPIO_ResetBits(GPIOC,GPIO_Pin_3);
  130.                                  vTaskDelay(500);/*---¶¨ÒåÑÓʱ500ms----*/
  131. //                          NVIC_SystemReset();/*--Ò»°ãÇé¿öϲ»»áµ½ÕâÀï-Èç¹û³ÌÐò×ßµ½ÕâÀï˵Ã÷ϵͳ³öÏÖÒì³£-----´Ë´¦×öµÄ´¦Àí¾ÍÊÇÖØÆôϵͳ-*/
  132.                         };

  133. }
  134. /******************* (C) COPYRIGHT 2012 WildFire Team *****END OF FILE************/


  135. /**/




复制代码






好啦,自己的习惯,末尾还是把代码附加上来!
FreeRTOS_STM32_Demo.rar (499.56 KB, 下载次数: 1)
回复

使用道具 举报

该用户从未签到

1153

主题

5959

帖子

0

精华

论坛元老

最后登录
2021-2-19
发表于 2018-12-21 12:25:21 | 显示全部楼层
看看了
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条

Archiver|手机版|小黑屋|罗姆半导体技术社区

GMT+8, 2024-4-26 22:39 , Processed in 0.090763 second(s), 13 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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