三、LED初始化
- #include "led.h"
- void led_init(void)
- {
- GPIO_InitTypeDef gpio_structure;
-
- RCC_AHBPeriphClk_Enable(RCC_AHB_PERIPH_GPIOC,ENABLE);
- RCC_AHBPeriphClk_Enable(RCC_AHB_PERIPH_GPIOA,ENABLE);
-
- gpio_structure.IT=GPIO_IT_NONE;
- gpio_structure.Mode=GPIO_MODE_OUTPUT_PP;
- gpio_structure.Pins=GPIO_PIN_13;
-
- GPIO_Init(CW_GPIOC,&gpio_structure);
-
- gpio_structure.IT=GPIO_IT_NONE;
- gpio_structure.Mode=GPIO_MODE_OUTPUT_PP;
- gpio_structure.Pins=GPIO_PIN_7|GPIO_PIN_8;
-
- GPIO_Init(CW_GPIOA,&gpio_structure);
-
- GPIO_WritePin(CW_GPIOC,GPIO_PIN_13,GPIO_Pin_SET);
- GPIO_WritePin(CW_GPIOA,GPIO_PIN_7,GPIO_Pin_SET);
- GPIO_WritePin(CW_GPIOA,GPIO_PIN_8,GPIO_Pin_SET);
- }
- void led_on(led_type led)
- {
- switch(led)
- {
- case led_1:GPIO_WritePin(CW_GPIOC,GPIO_PIN_13,GPIO_Pin_RESET);
- break;
- case led_2:GPIO_WritePin(CW_GPIOA,GPIO_PIN_7,GPIO_Pin_RESET);
- break;
- case led_3:GPIO_WritePin(CW_GPIOA,GPIO_PIN_8,GPIO_Pin_RESET);
- break;
- case led_all:
- GPIO_WritePin(CW_GPIOC,GPIO_PIN_13,GPIO_Pin_RESET);
- GPIO_WritePin(CW_GPIOA,GPIO_PIN_7,GPIO_Pin_RESET);
- GPIO_WritePin(CW_GPIOA,GPIO_PIN_8,GPIO_Pin_RESET);
- break;
- default:
- break;
- }
- }
- void led_off(led_type led)
- {
- switch(led)
- {
- case led_1:GPIO_WritePin(CW_GPIOC,GPIO_PIN_13,GPIO_Pin_SET);
- break;
- case led_2:GPIO_WritePin(CW_GPIOA,GPIO_PIN_7,GPIO_Pin_SET);
- break;
- case led_3:GPIO_WritePin(CW_GPIOA,GPIO_PIN_8,GPIO_Pin_SET);
- break;
- case led_all:
- GPIO_WritePin(CW_GPIOC,GPIO_PIN_13,GPIO_Pin_SET);
- GPIO_WritePin(CW_GPIOA,GPIO_PIN_7,GPIO_Pin_SET);
- GPIO_WritePin(CW_GPIOA,GPIO_PIN_8,GPIO_Pin_SET);
- break;
- default:
- break;
- }
- }
- void led_toggle(led_type led)
- {
- switch(led)
- {
- case led_1:GPIO_TogglePin(CW_GPIOC,GPIO_PIN_13);
- break;
- case led_2:GPIO_TogglePin(CW_GPIOA,GPIO_PIN_7);
- break;
- case led_3:GPIO_TogglePin(CW_GPIOA,GPIO_PIN_8);
- break;
- case led_all:
- GPIO_TogglePin(CW_GPIOC,GPIO_PIN_13);
- GPIO_TogglePin(CW_GPIOA,GPIO_PIN_7);
- GPIO_TogglePin(CW_GPIOA,GPIO_PIN_8);
- break;
- default:
- break;
- }
- }
- #ifndef _led_H
- #define _led_H
- #include "cw32l031.h"
- #include "cw32l031_gpio.h"
- #include "cw32l031_rcc.h"
- typedef enum
- {
- led_1=1,
- led_2,
- led_3,
- led_all
- }led_type;
- void led_init(void);
- void led_on(led_type led);
- void led_off(led_type led);
- void led_toggle(led_type led);
- #endif
四、主函数- #include "main.h"
- /******************************************************************************/
- static TaskHandle_t led1_task;
- static TaskHandle_t led2_task;
- static TaskHandle_t led3_task;
- static TaskHandle_t app_task;
- static void led1_entry(void *arg);
- static void led2_entry(void *arg);
- static void led3_entry(void *arg);
- static void app_entry(void* arg);
- /**
- ******************************************************************************
- ** \brief Main function of project
- **
- ** \return uint32_t return value, if needed
- **
- ** This sample toggle GPIOA.00
- **
- ******************************************************************************/
- int32_t main(void)
- {
- BaseType_t xreturn=pdPASS;
-
- led_init();
- // systick_set(8);
- SysTick_Config(SystemCoreClock);
- beep_init();
- xreturn=xTaskCreate(app_entry,"app",64,NULL,1,&app_task);
- if(pdPASS==xreturn)
- {
- vTaskStartScheduler();
- }
- else
- {
- return -1;
- }
- }
- static void app_entry(void* arg)
- {
- // BaseType_t xreturn=pdPASS;
- taskENTER_CRITICAL();
-
- xTaskCreate(led1_entry,"led1",64,NULL,2,&led1_task);
-
-
- xTaskCreate(led2_entry,"led2",64,NULL,3,&led2_task);
-
-
- xTaskCreate(led3_entry,"led3",64,NULL,4,&led3_task);
-
-
- vTaskDelete(app_task);
- taskEXIT_CRITICAL();
- }
- static void led1_entry(void *arg)
- {
- while(1)
- {
- led_toggle(led_1);
- vTaskDelay(350);
- }
- }
- static void led2_entry(void *arg)
- {
- while(1)
- {
- led_toggle(led_2);
- vTaskDelay(450);
- }
- }
- static void led3_entry(void *arg)
- {
- while(1)
- {
- led_toggle(led_3);
- vTaskDelay(550);
- }
-
- }
- /******************************************************************************
- * EOF (not truncated)
- ******************************************************************************/
- #ifdef USE_FULL_ASSERT
- /**
- * [url=home.php?mod=space&uid=247401]@brief[/url] Reports the name of the source file and the source line number
- * where the assert_param error has occurred.
- * @param file: pointer to the source file name
- * @param line: assert_param error line source number
- * @retval None
- */
- void assert_failed(uint8_t *file, uint32_t line)
- {
- /* USER CODE BEGIN 6 */
- /* User can add his own implementation to report the file name and line number,
- tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
- /* USER CODE END 6 */
- }
- #endif /* USE_FULL_ASSERT */
五、结果
移植结果展示