在线时间133 小时
UID372360
ROHM金币1227
注册时间2018-5-2
该用户从未签到
金牌会员
- 最后登录
- 2024-4-26
|
本帖最后由 xiaoshen-372360 于 2018-12-1 15:38 编辑
由于自己的板子还有几个器件没到,所以先把程序的环境搭建起来,自己先移植了Free-RTOS,后面多任务处理起来就方便的多了,下面就开始贴代码了。
另外说一下,如果谁需要PCB空板的话可以给我说,还有三块空板,免费送啦!邮费自理哈!
自己的板子的LED连接的引脚如下图所示
代码中值做了LED的闪烁,最简单的例子,简单易懂。
- /*=====================================================*/
- /*=========================================*/
- #include "FreeRTOS.h"
- #include "task.h"
- #include "queue.h"
- /*=========================================*/
- #include "stm32f10x.h"
- //--¶¨ÒåLEDµÄ¶Ë¿ÚºÅºÍÒý½Å
- //--LED1
- #define LED1_Port GPIOB
- #define LED1_Pin GPIO_Pin_2
- //--LED2
- #define LED2_Port GPIOA
- #define LED2_Pin GPIO_Pin_12
- //--LED3
- #define LED3_Port GPIOA
- #define LED3_Pin GPIO_Pin_15
- void PortInit()
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE );
- //--LED2 PA12 LED3 PA15
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_15 ;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init( GPIOA, &GPIO_InitStructure );
- //--LED 1--PB2
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 ;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init( GPIOB, &GPIO_InitStructure );
- }
- //
- void RCC_INIT_AAA( void )
- {
- /* Start with the clocks in their expected state. */
- RCC_DeInit();
- /* Enable HSE (high speed external clock). */
- RCC_HSEConfig( RCC_HSE_ON );
- /* Wait till HSE is ready. */
- while( RCC_GetFlagStatus( RCC_FLAG_HSERDY ) == RESET )
- {
-
- }
- /* 2 wait states required on the flash. */
- *( ( unsigned long * ) 0x40022000 ) = 0x02;
- /* HCLK = SYSCLK */
- RCC_HCLKConfig( RCC_SYSCLK_Div1 );
- /* PCLK2 = HCLK */
- RCC_PCLK2Config( RCC_HCLK_Div1 );
- /* PCLK1 = HCLK/2 */
- RCC_PCLK1Config( RCC_HCLK_Div2 );
- /* PLLCLK = 8MHz * 9 = 72 MHz. */
- RCC_PLLConfig( RCC_PLLSource_HSE_Div1, RCC_PLLMul_9 );
- /* Enable PLL. */
- RCC_PLLCmd( ENABLE );
- /* Wait till PLL is ready. */
- while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
- {
- }
- /* Select PLL as system clock source. */
- RCC_SYSCLKConfig( RCC_SYSCLKSource_PLLCLK );
- /* Wait till PLL is used as system clock source. */
- while( RCC_GetSYSCLKSource() != 0x08 )
- {
- }
- // /* Enable GPIOA, GPIOB, GPIOC, GPIOD, GPIOE and AFIO clocks */
- // RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |RCC_APB2Periph_GPIOC
- // | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE );
- // /* SPI2 Periph clock enable */
- // RCC_APB1PeriphClockCmd( RCC_APB1Periph_SPI2, ENABLE );
- // /* Set the Vector Table base address at 0x08000000 */
- // NVIC_SetVectorTable( NVIC_VectTab_FLASH, 0x0 );
- // NVIC_PriorityGroupConfig( NVIC_PriorityGroup_4 );
- // /* Configure HCLK clock as SysTick clock source. */
- // SysTick_CLKSourceConfig( SysTick_CLKSource_HCLK );
- }
-
- /*---------------------ÈÎÎñÒ»----------------------- */
- void Task_LED1( void *pvParameters )
- {
- while(1)
- {
- GPIO_SetBits(LED1_Port,LED1_Pin );
- vTaskDelay(400);/*---¶¨ÒåÑÓʱ500ms----*/
- GPIO_ResetBits(LED1_Port,LED1_Pin );
- vTaskDelay(400);/*---¶¨ÒåÑÓʱ500ms----*/
- }
- }
- /*---------------------ÈÎÎñ¶þ------------------------ */
- void Task_LED2( void *pvParameters )
- {
- while(1)
- {
- GPIO_SetBits(LED2_Port,LED2_Pin );
- vTaskDelay(100);/*---¶¨ÒåÑÓʱ500ms----*/
- GPIO_ResetBits(LED2_Port,LED2_Pin);
- vTaskDelay(100);/*---¶¨ÒåÑÓʱ500ms----*/
- }
- }
- /*---------------------ÈÎÎñ¶þ------------------------ */
- void Task_LED3( void *pvParameters )
- {
- while(1)
- {
- GPIO_SetBits(LED3_Port,LED3_Pin);
- vTaskDelay(50);/*---¶¨ÒåÑÓʱ500ms----*/
- GPIO_ResetBits(LED3_Port,LED3_Pin);
- vTaskDelay(50);/*---¶¨ÒåÑÓʱ500ms----*/
- }
- }
- /*---------------------------------------------------------*/
- int main(void)
- {
- PortInit();
- /*------´´½¨ÈÎÎñ------*/
- /*------²ÎÊý˵Ã÷£º1£ºÈÎÎñÃû³Æ£º¼´ÔÚ³ÌÐòÖк¯ÊýµÄÃû³Æ 2£ºÔÚÈÎÎñ¹ÜÀíÖеÄÃû³ÆÆäʵ²¢ÎÞÒâÒå 3£º¶ÑÕ»Éî¶È 4£º 5£ºÓÅÏȼ¶£º6£º */
-
- xTaskCreate( Task_LED1, "LED1", 1024, NULL, 4, NULL );
- xTaskCreate( Task_LED2, "LED2", 1024, NULL, 5, NULL );
- xTaskCreate( Task_LED3, "LED3", 1024, NULL, 6, NULL );
- // /*-----ÈÎÎñ´´½¨ÈÎÎñ³É-----*/
- /*===========================================================*/
- /*-----¿ªÊ¼ÈÎÎñɨÃè-----*/
- vTaskStartScheduler();
- while(1)
- {
- GPIO_SetBits(GPIOC,GPIO_Pin_3);
- vTaskDelay(500);/*---¶¨ÒåÑÓʱ500ms----*/
- GPIO_ResetBits(GPIOC,GPIO_Pin_3);
- vTaskDelay(500);/*---¶¨ÒåÑÓʱ500ms----*/
- // NVIC_SystemReset();/*--Ò»°ãÇé¿öϲ»»áµ½ÕâÀï-Èç¹û³ÌÐò×ßµ½ÕâÀï˵Ã÷ϵͳ³öÏÖÒì³£-----´Ë´¦×öµÄ´¦Àí¾ÍÊÇÖØÆôϵͳ-*/
- };
- }
- /******************* (C) COPYRIGHT 2012 WildFire Team *****END OF FILE************/
- /**/
复制代码
好啦,自己的习惯,末尾还是把代码附加上来!
FreeRTOS_STM32_Demo.rar
(499.56 KB, 下载次数: 1)
|
|