|
<
1、尝试目标
使用库函数编写,熟习GPIO的使用。
2、尝试道理
使用PWM道理完成色彩变革,使一个周期内乱三种单色光差别的占空比。
3、电路道理图
4、代码完成
main
- #include "led.h"
- #include "stdio.h"
- #include "delay.h"
- #include "stm32f10x.h"
- u8 UART3_data,UART1_data;
- u8 UART3_rcv[20],UART3_rcv_count;
- u8 UART1_rcv[50],UART1_rcv_count,Uart1_finish;
- int main(void)
- {
- delay_init();
- led_init();
- while (1)
- {
- //每1次改动色
- int num;
- for(num=1;num<=12;num++)
- {
- led_pwm(num);
-
- }
- led_mode_A();
- }
- }
复造代码 led.h
- #include "led.h"
- #include "stdio.h"
- #include "led.h"
- #include "delay.h"
- void led_init(void)
- {
- GPIO_InitTypeDef GPIO_InitStruct_A,GPIO_InitStruct_B;
- //翻开引足A,B的时钟
- RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);
- RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE);
- // 设置管足
- GPIO_InitStruct_B.GPIO_Mode=GPIO_Mode_Out_PP;
- GPIO_InitStruct_B.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;
- GPIO_InitStruct_B.GPIO_Speed=GPIO_Speed_50MHz;
- // 设置管足A
- GPIO_InitStruct_A.GPIO_Mode=GPIO_Mode_Out_PP;
- GPIO_InitStruct_A.GPIO_Pin=GPIO_Pin_7;
- GPIO_InitStruct_A.GPIO_Speed=GPIO_Speed_50MHz;
- //A,B管足的的初初化
- GPIO_Init(GPIOB,&GPIO_InitStruct_B);
- GPIO_Init(GPIOA,&GPIO_InitStruct_A);
- //
- GPIO_ResetBits(LED_R_GPIO_PORT,LED_R_GPIO_PIN);
- GPIO_ResetBits(LED_G_GPIO_PORT,LED_G_GPIO_PIN);
- GPIO_ResetBits(LED_B_GPIO_PORT,LED_B_GPIO_PIN);
- }
- void led_pwm(int k)
- {
- int i=2000;//两秒变革周期
- for (;i>0;i--)
- {
- //
- GPIO_SetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
- GPIO_SetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
- GPIO_SetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
- switch(k)
- {
- case 1:
- delay_us(200);
- GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
- delay_us(200);
- GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
- delay_us(200);
- GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
- delay_us(400);
- break;
- case 2:
- delay_us(300);
- GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
- delay_us(300);
- GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
- delay_us(300);
- GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
- delay_us(100);
- break;
- case 3:
- delay_us(50);
- GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
- delay_us(550);
- GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
- delay_us(200);
- GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
- delay_us(200);
- break;
- case 4:
- delay_us(200);
- GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
- delay_us(200);
- GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
- delay_us(200);
- GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
- delay_us(400);
- break;
- case 5:
- delay_us(300);
- GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
- delay_us(300);
- GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
- delay_us(300);
- GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
- delay_us(100);
- break;
- case 6:
- delay_us(50);
- GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
- delay_us(550);
- GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
- delay_us(200);
- GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
- delay_us(200);
- break;
- case 7:
- delay_us(200);
- GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
- delay_us(200);
- GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
- delay_us(200);
- GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
- delay_us(400);
- break;
- case 8:
- delay_us(300);
- GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
- delay_us(300);
- GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
- delay_us(300);
- GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
- delay_us(100);
- break;
- case 9:
- delay_us(50);
- GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
- delay_us(550);
- GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
- delay_us(200);
- GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
- delay_us(200);
- break;
- case 10:
- delay_us(200);
- GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
- delay_us(200);
- GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
- delay_us(200);
- GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
- delay_us(400);
- break;
- case 11:
- delay_us(300);
- GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
- delay_us(300);
- GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
- delay_us(300);
- GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
- delay_us(100);
- break;
- case 12:
- delay_us(50);
- GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
- delay_us(550);
- GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
- delay_us(200);
- GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
- delay_us(200);
- break;
- }
- }
- }
- void led_mode_A(void)
- {
- GPIO_SetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
- delay_ms(20000);
- GPIO_ResetBits(LED_R_GPIO_PORT,LED_R_GPIO_PIN);
-
- GPIO_SetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
- delay_ms(20000);
- GPIO_ResetBits(LED_G_GPIO_PORT,LED_G_GPIO_PIN);
-
- GPIO_SetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
- delay_ms(20000);
- GPIO_ResetBits(LED_B_GPIO_PORT,LED_B_GPIO_PIN);
- }
-
-
复造代码 代码很小利剑,列位看民不雅多斧正哦~
免责声明:假如进犯了您的权益,请联络站少,我们会实时删除侵权内乱容,感谢协作! |
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
|