OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2356|回复: 5

stm32触屏按钮控制蜂鸣器发不同的声音,形成简易电子琴

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2020-7-7
在线时间
2 小时
发表于 2020-7-10 09:18:22 | 显示全部楼层 |阅读模式
time.c

#include "timer.h"
#include "led.h"
#include "GUI.h"
#include "usart.h"
void TIM4_PWM_Init(u16 arr,u16 psc)
{  
        GPIO_InitTypeDef GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_OCInitTypeDef  TIM_OCInitStructure;
       

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);        //ê1Äü¶¨ê±Æ÷3ê±Öó
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO, ENABLE);  //ê1ÄüGPIOíaéèoíAFIO¸′óÃ1|ÄüÄ£¿éê±Öó
       
        //GPIO_PinRemapConfig(GPIO_Remap_TIM4, ENABLE); //Timer4ÖØó3éä TIM4_CH3->PB8   


        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //TIM_CH3
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //¸′óÃíÆíìêä3ö
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);//3õê¼»ˉGPIO

   //3õê¼»ˉTIM3
        TIM_TimeBaseStructure.TIM_Period = arr; //éèÖÃÔúÏÂò»¸ö¸üDÂê¼t×°èë»î¶ˉμÄ×Ô¶ˉÖØ×°ÔؼÄ′æÆ÷ÖüÆúμÄÖμ
        TIM_TimeBaseStructure.TIM_Prescaler =psc; //éèÖÃóÃà′×÷ÎaTIMxê±ÖóÆμÂê3yêyμÄÔ¤·ÖÆμÖμ
        TIM_TimeBaseStructure.TIM_ClockDivision = 0; //éèÖÃê±Öó·Ö¸î:TDTS = Tck_tim
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIMÏòéϼÆêyÄ£ê½
        TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); //¸ù¾YTIM_TimeBaseInitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉTIMxμÄê±¼ä»ùêyμ¥λ
       
        //3õê¼»ˉTIM3 Channel2 PWMģ꽠        
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //Ñ¡Ôñ¶¨ê±Æ÷Ä£ê½:TIMÂö3å¿í¶èμ÷ÖÆÄ£ê½2
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //±è½Ïêä3öê1Äü
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //êä3ö¼«DÔ:TIMêä3ö±è½Ï¼«DÔ¸ß
       
        TIM_OCInitStructure.TIM_Pulse = 8000; //Õ¼¿Õ±è                                             
        TIM_OC3Init(TIM4, &TIM_OCInitStructure);  //3õê¼»ˉTIM4μÄCH3í¨μà
        TIM_OC3PreloadConfig(TIM4, TIM_OCPreload_Enable);  //ê1ÄüTIM4ÔúCH3í¨μàCCR3éÏμÄԤװÔÔ¼Ä′æÆ÷
        TIM_ARRPreloadConfig(TIM4,ENABLE);//ê1ÄüTIM4ÔúCH3í¨μàARR3éÏμÄԤװÔú¼Ä′æÆ÷
        TIM_Cmd(TIM4, ENABLE);  //ê1ÄüTIM3
       

}


BUTTONUse.c
#include "DIALOG.h"
#include "ButtonUse.h"
#include "delay.h"
#include "led.h"
#include "beep.h"
#define ID_FRAMEWIN_0  (GUI_ID_USER + 0x00)
#define ID_BUTTON_0  (GUI_ID_USER + 0x01)
#define ID_BUTTON_1  (GUI_ID_USER + 0x02)
#define ID_BUTTON_2  (GUI_ID_USER + 0x03)
#define ID_BUTTON_3  (GUI_ID_USER + 0x04)
#define ID_BUTTON_4  (GUI_ID_USER + 0x05)
#define ID_BUTTON_5  (GUI_ID_USER + 0x06)
#define ID_BUTTON_6  (GUI_ID_USER + 0x07)
#define ID_BUTTON_7  (GUI_ID_USER + 0x08)
void TIM4_PWM_Init(u16 arr,u16 psc);
int buf[] = {1000,3000,5000,7000,9000,11000,13000,15000,17000,19000,};
unsigned char buf_change1[10] = {190,184,136,88,40,88,224,152,104};
unsigned char buf_change2[10] = {33,184,136,88,40,88,99,152,222};
unsigned char buf_change3[10] = {187,184,181,178,175, 171,168,164,161,158};
unsigned char buf_change4[10]  ={247,6,38,74,93,136,184,38,11, 75 };

void buf_yin(unsigned char data[])
{        unsigned char ik;
  for(ik=0;ik<3;ik++){
                GPIO_Write(GPIOC,data[ik]);
                                delay_ms(1);
        }
}
void buf_yue(unsigned char data[])
{        unsigned char ik;
        for(ik=3;ik>0;ik++)
        {
                GPIO_Write(GPIOC,data[ik]);
                                                delay_ms(1);
        }
               
        }
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] =
{
  { FRAMEWIN_CreateIndirect, "Simple electronic organ", ID_FRAMEWIN_0, -12, 0, 800, 483, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "Button1", ID_BUTTON_0, 116, 97, 97, 32, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "Button2", ID_BUTTON_1, 278, 95, 88, 33, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "Button3", ID_BUTTON_2, 427, 96, 90, 35, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "Button4", ID_BUTTON_3, 570, 98, 91, 32, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "Button5", ID_BUTTON_4, 109, 216, 102, 33, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "Button6", ID_BUTTON_5, 276, 210, 95, 40, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "Button7", ID_BUTTON_6, 421, 212, 97, 35, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "Button8", ID_BUTTON_7, 573, 209, 102, 38, 0, 0x0, 0 },

};


//&#182;&#212;&#187;°&#191;ò&#187;&#216;μ÷oˉêy
static void _cbDialog(WM_MESSAGE * pMsg) {

        WM_HWIN hItem;
        int     NCode;
        int     Id;

        switch (pMsg->MsgId)
        {
                case WM_INIT_DIALOG:
                        //3&#245;ê&#188;&#187;ˉ&#182;&#212;&#187;°&#191;ò
                        hItem = pMsg->hWin;
                        FRAMEWIN_SetTitleHeight(hItem, 30);
                        FRAMEWIN_SetText(hItem, "ALIENTE BUTTON USE");
                        FRAMEWIN_SetFont(hItem, GUI_FONT_24_ASCII);
                        FRAMEWIN_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
                        FRAMEWIN_SetTextColor(hItem, 0x00FFF00);
               
                        //3&#245;ê&#188;&#187;ˉBUTTON0
                        hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
                        BUTTON_SetFont(hItem, GUI_FONT_24_ASCII);
                        BUTTON_SetText(hItem, "ONE");

                       
                        //3&#245;ê&#188;&#187;ˉBUTTON1
                        hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);
                BUTTON_SetText(hItem, "TWO");
                        BUTTON_SetFont(hItem, GUI_FONT_24_ASCII);
                               
                        //3&#245;ê&#188;&#187;ˉBUTTON2
                  hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_2);
                        BUTTON_SetText(hItem, "THREE");
                        BUTTON_SetFont(hItem, GUI_FONT_24_ASCII);
                        //3&#245;ê&#188;&#187;ˉBUTTON3
                  hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_3);
                        BUTTON_SetText(hItem, "FOUR");
                        BUTTON_SetFont(hItem, GUI_FONT_24_ASCII);
                        //3&#245;ê&#188;&#187;ˉBUTTON4
                  hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_4);
                        BUTTON_SetText(hItem, "FIVE");
                        BUTTON_SetFont(hItem, GUI_FONT_24_ASCII);
                        //3&#245;ê&#188;&#187;ˉBUTTON5
                  hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_5);
                        BUTTON_SetText(hItem, "SIX");
                        BUTTON_SetFont(hItem, GUI_FONT_24_ASCII);
                        //3&#245;ê&#188;&#187;ˉBUTTON6
                  hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_6);

                        BUTTON_SetText(hItem, "SEVEN");
                        BUTTON_SetFont(hItem, GUI_FONT_24_ASCII);
                        //3&#245;ê&#188;&#187;ˉBUTTON7
                  hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_7);

                        BUTTON_SetText(hItem, "EIGHT");
                        BUTTON_SetFont(hItem, GUI_FONT_24_ASCII);
                        break;
                case WM_NOTIFY_PARENT:
                        Id    = WM_GetId(pMsg->hWinSrc);
                        NCode = pMsg->Data.v;
                        switch(Id)
                        {
                                case ID_BUTTON_0: //BUTTON_0μ&#196;í¨&#214;a′ú&#194;&#235;£&#172;&#191;&#216;&#214;&#198;LED1
                                        switch(NCode)
                                        {
                                                case WM_NOTIFICATION_CLICKED:
                                                        break;
                                                case WM_NOTIFICATION_RELEASED: //°′&#197;¥±&#187;°′&#207;&#194;2¢êí·&#197;
                                       
int buf[] = {1000,3000,50007000,9000,11000,13000,15000,17000,19000};                                                 buf[] = {1000,3000}£&#187;
                                                for(n=0;n<3;n++){
                                                        uf_yin(buf_change1);
                                                buf_yue( buf_change2);
                TIM4_PWM_Init(buf[n],0);       
                                        delay_ms(30);}
                                                               
                                        //BEEP=!BEEP;

                                                //·&#228;&#195;ù&#198;÷&#207;ì
                                                        break;       
                                        }
                                        break;
                                        case ID_BUTTON_1: //BUTTON_0μ&#196;í¨&#214;a′ú&#194;&#235;£&#172;&#191;&#216;&#214;&#198;LED1
                                        switch(NCode)
                                        {
                                                case WM_NOTIFICATION_CLICKED:
                                                        break;
                                                case WM_NOTIFICATION_RELEASED: //°′&#197;¥±&#187;°′&#207;&#194;2¢êí·&#197;

                                                TIM4->CCR3=288;       
                        TIM_Cmd(TIM4,ENABLE);
                                                        //BEEP=!BEEP;//·&#228;&#195;ù&#198;÷&#207;ì
                               
                                                break;       
                                               
                                        }
                                        break;
                                       
                                        case ID_BUTTON_2: //BUTTON_0μ&#196;í¨&#214;a′ú&#194;&#235;£&#172;&#191;&#216;&#214;&#198;LED1
                                        switch(NCode)
                                        {
                                                case WM_NOTIFICATION_CLICKED:
                                                        break;
                                                case WM_NOTIFICATION_RELEASED: //°′&#197;¥±&#187;°′&#207;&#194;2¢êí·&#197;
                                                               
                                                        TIM4->CCR3=288;       
               
                                                TIM_Cmd(TIM4,ENABLE);
                                                        //BEEP=!BEEP;//·&#228;&#195;ù&#198;÷&#207;ì
                       
                                                break;       
                                        }
                                        break;
                                        case ID_BUTTON_3: //BUTTON_0μ&#196;í¨&#214;a′ú&#194;&#235;£&#172;&#191;&#216;&#214;&#198;LED1
                                        switch(NCode)
                                        {
                                                case WM_NOTIFICATION_CLICKED:
                                                        break;
                                                case WM_NOTIFICATION_RELEASED: //°′&#197;¥±&#187;°′&#207;&#194;2¢êí·&#197;
                                                               
                                                        TIM4->CCR3=320;
                                                TIM_Cmd(TIM4,ENABLE);
                                                        //BEEP=!BEEP;//·&#228;&#195;ù&#198;÷&#207;ì
       
                                                        break;       
                                        }
                                        break;
                                        case ID_BUTTON_4: //BUTTON_0μ&#196;í¨&#214;a′ú&#194;&#235;£&#172;&#191;&#216;&#214;&#198;LED1
                                        switch(NCode)
                                        {
                                                case WM_NOTIFICATION_CLICKED:
                                                        break;
                                                case WM_NOTIFICATION_RELEASED: //°′&#197;¥±&#187;°′&#207;&#194;2¢êí·&#197;
                                                               
                                                TIM4->CCR3=341;       
                       
                                                TIM_Cmd(TIM4,ENABLE);
                                                        //BEEP=!BEEP;//·&#228;&#195;ù&#198;÷&#207;ì
               
                                                        break;       
                                        }
                                        break;
                                        case ID_BUTTON_5: //BUTTON_0μ&#196;í¨&#214;a′ú&#194;&#235;£&#172;&#191;&#216;&#214;&#198;LED1
                                        switch(NCode)
                                        {
                                                case WM_NOTIFICATION_CLICKED:
                                                        break;
                                                case WM_NOTIFICATION_RELEASED: //°′&#197;¥±&#187;°′&#207;&#194;2¢êí·&#197;
                                                               
                                                        TIM4->CCR3=384;       
                                                               
                                                TIM_Cmd(TIM4,ENABLE);
                                                //        BEEP=!BEEP;///·&#228;&#195;ù&#198;÷&#207;ì
                                                        break;       
                                        }
                                        break;
                                        case ID_BUTTON_6: //BUTTON_0μ&#196;í¨&#214;a′ú&#194;&#235;£&#172;&#191;&#216;&#214;&#198;LED1
                                        switch(NCode)
                                        {
                                                case WM_NOTIFICATION_CLICKED:
                                                        break;
                                                case WM_NOTIFICATION_RELEASED: //°′&#197;¥±&#187;°′&#207;&#194;2¢êí·&#197;
                                                               
                                                        TIM4->CCR3=4000;       
                               
                                                TIM_Cmd(TIM4,ENABLE);
                                                        //BEEP=!BEEP;//·&#228;&#195;ù&#198;÷&#207;ì
                                                        break;       
                                        }
                                        break;
                                        case ID_BUTTON_7: //BUTTON_0μ&#196;í¨&#214;a′ú&#194;&#235;£&#172;&#191;&#216;&#214;&#198;LED1
                                        switch(NCode)
                                        {
                                                case WM_NOTIFICATION_CLICKED:
                                                        break;
                                                case WM_NOTIFICATION_RELEASED: //°′&#197;¥±&#187;°′&#207;&#194;2¢êí·&#197;
                                                               
                                                        TIM4->CCR3=480;       
                       
                                                TIM_Cmd(TIM4,ENABLE);
                                       
                                                        //BEEP=!BEEP;//·&#228;&#195;ù&#198;÷&#207;ì                                       
                                                        break;       
                                        }
                                        break;
                        }

                        break;
                default:
                        WM_DefaultProc(pMsg);
                        break;
        }
}

//′′&#189;¨ò&#187;&#184;&#246;&#182;&#212;&#187;°&#191;ò
WM_HWIN CreateFramewin(void)
{
        WM_HWIN hWin;

        hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
        return hWin;
}

//BUTTO&#209;Yê&#190;oˉêy
void ButtonUse_Demo(void)
{
        WM_HWIN hWin;
        hWin=CreateFramewin();
        while(1)
        {
                GUI_Delay(100);
        }
}


main.c
#include "led.h"
#include "beep.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "ILI93xx.h"
#include "usart.h"         
#include "24cxx.h"
#include "flash.h"
#include "touch.h"
#include "sram.h"
#include "timer.h"
#include "sdio_sdcard.h"
#include "malloc.h"
#include "GUI.h"
#include "ff.h"
#include "exfuns.h"
#include "w25qxx.h"
#include "includes.h"
#include "ButtonUse.h"
#include "WM.h"
#include "DIALOG.h"

/************************************************
ALIENTEK&#213;&#189;&#189;¢STM32&#191;a·¢°&#229;STemWinêμ&#209;é
STemWin BUTTONê1ó&#195;
&#188;&#188;ê&#245;&#214;§3&#214;£owww.openedv.com
ì&#212;±|μê&#198;ì£ohttp://eboard.taobao.co
1&#216;×¢&#206;¢D&#197;1&#171;&#214;ú&#198;&#189;ì¨&#206;¢D&#197;o&#197;£o"&#213;yμ&#227;&#212;-×ó"£&#172;&#195;a·&#209;&#187;&#241;è&#161;STM32×êá&#207;&#161;£
1&#227;&#214;YêDD&#199;òíμ&#231;×ó&#191;&#198;&#188;&#188;óD&#207;T1&#171;&#203;&#190;  
×÷&#213;&#223;£o&#213;yμ&#227;&#212;-×ó @ALIENTEK
************************************************/

//è&#206;&#206;&#241;ó&#197;&#207;è&#188;&#182;
#define START_TASK_PRIO                                3
//è&#206;&#206;&#241;&#182;&#209;&#213;&#187;′óD&#161;       
#define START_STK_SIZE                                 1024
//è&#206;&#206;&#241;&#191;&#216;&#214;&#198;&#191;é
OS_TCB StartTaskTCB;
//è&#206;&#206;&#241;&#182;&#209;&#213;&#187;       
CPU_STK START_TASK_STK[START_STK_SIZE];
//è&#206;&#206;&#241;oˉêy
void start_task(void *p_arg);

//TOUCHè&#206;&#206;&#241;
//éè&#214;&#195;è&#206;&#206;&#241;ó&#197;&#207;è&#188;&#182;
#define TOUCH_TASK_PRIO                                4
//è&#206;&#206;&#241;&#182;&#209;&#213;&#187;′óD&#161;
#define TOUCH_STK_SIZE                                128
//è&#206;&#206;&#241;&#191;&#216;&#214;&#198;&#191;é
OS_TCB TouchTaskTCB;
//è&#206;&#206;&#241;&#182;&#209;&#213;&#187;
CPU_STK TOUCH_TASK_STK[TOUCH_STK_SIZE];
//touchè&#206;&#206;&#241;
void touch_task(void *p_arg);

//LED0è&#206;&#206;&#241;
//éè&#214;&#195;è&#206;&#206;&#241;ó&#197;&#207;è&#188;&#182;
#define LED0_TASK_PRIO                                 5
//è&#206;&#206;&#241;&#182;&#209;&#213;&#187;′óD&#161;
#define LED0_STK_SIZE                                128
//è&#206;&#206;&#241;&#191;&#216;&#214;&#198;&#191;é
OS_TCB Led0TaskTCB;
//è&#206;&#206;&#241;&#182;&#209;&#213;&#187;
CPU_STK LED0_TASK_STK[LED0_STK_SIZE];
//led0è&#206;&#206;&#241;
void led0_task(void *p_arg);

//EMWINDEMOè&#206;&#206;&#241;
//éè&#214;&#195;è&#206;&#206;&#241;ó&#197;&#207;è&#188;&#182;
#define EMWINDEMO_TASK_PRIO                        6
//è&#206;&#206;&#241;&#182;&#209;&#213;&#187;′óD&#161;
#define EMWINDEMO_STK_SIZE                        2048
//è&#206;&#206;&#241;&#191;&#216;&#214;&#198;&#191;é
OS_TCB EmwindemoTaskTCB;
//è&#206;&#206;&#241;&#182;&#209;&#213;&#187;
CPU_STK EMWINDEMO_TASK_STK[EMWINDEMO_STK_SIZE];
//emwindemo_taskè&#206;&#206;&#241;
void emwindemo_task(void *p_arg);

int main(void)
{       
         
       
        OS_ERR err;
        CPU_SR_ALLOC();
       
        delay_init();                    //&#209;óê±oˉêy3&#245;ê&#188;&#187;ˉ          
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //éè&#214;&#195;NVIC&#214;D&#182;&#207;·&#214;×é2:2&#206;&#187;&#199;à&#213;&#188;ó&#197;&#207;è&#188;&#182;£&#172;2&#206;&#187;&#207;ìó|ó&#197;&#207;è&#188;&#182;
        uart_init(115200);                 //′&#174;&#191;ú3&#245;ê&#188;&#187;ˉ&#206;a115200
        LED_Init();                            //LED&#182;&#203;&#191;ú3&#245;ê&#188;&#187;ˉ
        TFTLCD_Init();                        //LCD3&#245;ê&#188;&#187;ˉ       
        KEY_Init();                                 //°′&#188;ü3&#245;ê&#188;&#187;ˉ
        BEEP_Init();                        //3&#245;ê&#188;&#187;ˉ·&#228;&#195;ù&#198;÷
        FSMC_SRAM_Init();                //3&#245;ê&#188;&#187;ˉSRAM
        my_mem_init(SRAMIN);         //3&#245;ê&#188;&#187;ˉ&#196;ú2&#191;&#196;ú′&#230;3&#216;
        my_mem_init(SRAMEX);          //3&#245;ê&#188;&#187;ˉía2&#191;&#196;ú′&#230;3&#216;
                delay_init();       
        exfuns_init();                        //&#206;afatfs&#206;&#196;&#188;t&#207;μí3·&#214;&#197;&#228;&#196;ú′&#230;
        f_mount(fs[0],"0:",1);        //1ò&#212;&#216;SD&#191;¨
        f_mount(fs[1],"1:",1);        //1ò&#212;&#216;FLASH
        TP_Init();                                //′¥&#195;t&#198;á3&#245;ê&#188;&#187;ˉ
        OSInit(&err);                        //3&#245;ê&#188;&#187;ˉUCOSIII
        OS_CRITICAL_ENTER();        //&#189;&#248;è&#235;áù&#189;&#231;&#199;&#248;
        //′′&#189;¨&#191;aê&#188;è&#206;&#206;&#241;
        OSTaskCreate((OS_TCB         * )&StartTaskTCB,                //è&#206;&#206;&#241;&#191;&#216;&#214;&#198;&#191;é
                                 (CPU_CHAR        * )"start task",                 //è&#206;&#206;&#241;&#195;&#251;×&#214;
                 (OS_TASK_PTR )start_task,                         //è&#206;&#206;&#241;oˉêy
                 (void                * )0,                                        //′&#171;μY&#184;&#248;è&#206;&#206;&#241;oˉêyμ&#196;2&#206;êy
                 (OS_PRIO          )START_TASK_PRIO,     //è&#206;&#206;&#241;ó&#197;&#207;è&#188;&#182;
                 (CPU_STK   * )&START_TASK_STK[0],        //è&#206;&#206;&#241;&#182;&#209;&#213;&#187;&#187;ùμ&#216;&#214;·
                 (CPU_STK_SIZE)START_STK_SIZE/10,        //è&#206;&#206;&#241;&#182;&#209;&#213;&#187;é&#238;&#182;è&#207;T&#206;&#187;
                 (CPU_STK_SIZE)START_STK_SIZE,                //è&#206;&#206;&#241;&#182;&#209;&#213;&#187;′óD&#161;
                 (OS_MSG_QTY  )0,                                        //è&#206;&#206;&#241;&#196;ú2&#191;&#207;&#251;&#207;¢&#182;óáD&#196;ü1&#187;&#189;óê&#213;μ&#196;×&#238;′ó&#207;&#251;&#207;¢êy&#196;&#191;,&#206;a0ê±&#189;&#251;&#214;1&#189;óê&#213;&#207;&#251;&#207;¢
                 (OS_TICK          )0,                                        //μ±ê1&#196;üê±&#188;&#228;&#198;&#172;&#194;&#214;×aê±μ&#196;ê±&#188;&#228;&#198;&#172;3¤&#182;è£&#172;&#206;a0ê±&#206;a&#196;&#172;è&#207;3¤&#182;è£&#172;
                 (void           * )0,                                        //ó&#195;&#187;§213&#228;μ&#196;′&#230;′¢&#199;&#248;
                 (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, //è&#206;&#206;&#241;&#209;&#161;&#207;&#238;
                 (OS_ERR         * )&err);                                //′&#230;·&#197;&#184;&#195;oˉêy′í&#206;óê±μ&#196;·μ&#187;&#216;&#214;μ
        OS_CRITICAL_EXIT();        //í&#203;3&#246;áù&#189;&#231;&#199;&#248;         
        OSStart(&err);  //&#191;a&#198;&#244;UCOSIII
        while(1);

}

//&#191;aê&#188;è&#206;&#206;&#241;oˉêy
void start_task(void *p_arg)
{
        OS_ERR err;
        CPU_SR_ALLOC();
        p_arg = p_arg;

        CPU_Init();
#if OS_CFG_STAT_TASK_EN > 0u
   OSStatTaskCPUUsageInit(&err);          //í3&#188;&#198;è&#206;&#206;&#241;               
#endif
       
#ifdef CPU_CFG_INT_DIS_MEAS_EN                //è&#231;1&#251;ê1&#196;üá&#203;2aá&#191;&#214;D&#182;&#207;1&#216;±&#213;ê±&#188;&#228;
    CPU_IntDisMeasMaxCurReset();       
#endif

#if        OS_CFG_SCHED_ROUND_ROBIN_EN  //μ±ê1ó&#195;ê±&#188;&#228;&#198;&#172;&#194;&#214;×aμ&#196;ê±oò
         //ê1&#196;üê±&#188;&#228;&#198;&#172;&#194;&#214;×aμ÷&#182;è1|&#196;ü,ê±&#188;&#228;&#198;&#172;3¤&#182;è&#206;a1&#184;&#246;&#207;μí3ê±&#214;ó&#189;ú&#197;&#196;£&#172;&#188;è1*5=5ms
        OSSchedRoundRobinCfg(DEF_ENABLED,1,&err);  
#endif               
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC,ENABLE);//&#191;a&#198;&#244;CRCê±&#214;ó
        WM_SetCreateFlags(WM_CF_MEMDEV);         //&#198;&#244;&#182;ˉ&#203;ùóD′°&#191;úμ&#196;′&#230;′¢éè±&#184;
        GUI_Init();                          //STemWin3&#245;ê&#188;&#187;ˉ

        OS_CRITICAL_ENTER();        //&#189;&#248;è&#235;áù&#189;&#231;&#199;&#248;
        //STemWin Demoè&#206;&#206;&#241;       
        OSTaskCreate((OS_TCB*     )&EmwindemoTaskTCB,               
                                 (CPU_CHAR*   )"Emwindemo task",                
                 (OS_TASK_PTR )emwindemo_task,                        
                 (void*       )0,                                       
                 (OS_PRIO          )EMWINDEMO_TASK_PRIO,     
                 (CPU_STK*    )&EMWINDEMO_TASK_STK[0],       
                 (CPU_STK_SIZE)EMWINDEMO_STK_SIZE/10,       
                 (CPU_STK_SIZE)EMWINDEMO_STK_SIZE,               
                 (OS_MSG_QTY  )0,                                       
                 (OS_TICK          )0,                                         
                 (void*       )0,                                       
                 (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
                 (OS_ERR*     )&err);
        //′¥&#195;t&#198;áè&#206;&#206;&#241;
        OSTaskCreate((OS_TCB*     )&TouchTaskTCB,               
                                 (CPU_CHAR*   )"Touch task",                
                 (OS_TASK_PTR )touch_task,                        
                 (void*       )0,                                       
                 (OS_PRIO          )TOUCH_TASK_PRIO,     
                 (CPU_STK*    )&TOUCH_TASK_STK[0],       
                 (CPU_STK_SIZE)TOUCH_STK_SIZE/10,       
                 (CPU_STK_SIZE)TOUCH_STK_SIZE,               
                 (OS_MSG_QTY  )0,                                       
                 (OS_TICK          )0,                                         
                 (void*       )0,                                       
                 (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
                 (OS_ERR*     )&err);                         
        //LED0è&#206;&#206;&#241;
        OSTaskCreate((OS_TCB*     )&Led0TaskTCB,               
                                 (CPU_CHAR*   )"Led0 task",                
                 (OS_TASK_PTR )led0_task,                        
                 (void*       )0,                                       
                 (OS_PRIO          )LED0_TASK_PRIO,     
                 (CPU_STK*    )&LED0_TASK_STK[0],       
                 (CPU_STK_SIZE)LED0_STK_SIZE/10,       
                 (CPU_STK_SIZE)LED0_STK_SIZE,               
                 (OS_MSG_QTY  )0,                                       
                 (OS_TICK          )0,                                         
                 (void*       )0,                                       
                 (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
                 (OS_ERR*     )&err);
        OS_TaskSuspend((OS_TCB*)&StartTaskTCB,&err);                //1ò&#198;e&#191;aê&#188;è&#206;&#206;&#241;                         
        OS_CRITICAL_EXIT();        //í&#203;3&#246;áù&#189;&#231;&#199;&#248;
}

//EMWINDEMOè&#206;&#206;&#241;
void emwindemo_task(void *p_arg)
{
        //&#184;ü&#187;&#187;&#198;¤·&#244;
        BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);
        CHECKBOX_SetDefaultSkin(CHECKBOX_SKIN_FLEX);
        DROPDOWN_SetDefaultSkin(DROPDOWN_SKIN_FLEX);
        FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);
        HEADER_SetDefaultSkin(HEADER_SKIN_FLEX);
        MENU_SetDefaultSkin(MENU_SKIN_FLEX);
        MULTIPAGE_SetDefaultSkin(MULTIPAGE_SKIN_FLEX);
        PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
        RADIO_SetDefaultSkin(RADIO_SKIN_FLEX);
        SCROLLBAR_SetDefaultSkin(SCROLLBAR_SKIN_FLEX);
        SLIDER_SetDefaultSkin(SLIDER_SKIN_FLEX);
        SPINBOX_SetDefaultSkin(SPINBOX_SKIN_FLEX);
        while(1)
        {
                ButtonUse_Demo();
        }
}

//TOUCHè&#206;&#206;&#241;
void touch_task(void *p_arg)
{
        OS_ERR err;
        while(1)
        {
                GUI_TOUCH_Exec();       
                OSTimeDlyHMSM(0,0,0,5,OS_OPT_TIME_PERIODIC,&err);//&#209;óê±5ms
        }
}

//LED0è&#206;&#206;&#241;
void led0_task(void *p_arg)
{
        OS_ERR err;
        while(1)
        {
                //LED0 = !LED0;
                OSTimeDlyHMSM(0,0,0,500,OS_OPT_TIME_PERIODIC,&err);//&#209;óê±500ms
        }
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2022-3-2
在线时间
2 小时
发表于 2022-3-3 08:59:05 | 显示全部楼层

RE: stm32触屏按钮控制蜂鸣器发不同的声音,形成简易电子琴

楼主你好,请问有整个项目的文件夹吗
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2022-3-5
在线时间
13 小时
发表于 2022-3-5 17:02:30 | 显示全部楼层
同问有木有啊
回复 支持 反对

使用道具 举报

14

主题

821

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2033
金钱
2033
注册时间
2021-7-17
在线时间
635 小时
发表于 2022-3-5 17:21:12 | 显示全部楼层
建议楼主打包工程分享
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2022-3-5
在线时间
13 小时
发表于 2022-3-7 12:42:45 | 显示全部楼层
好长一个。。。
回复 支持 反对

使用道具 举报

17

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2014-6-4
在线时间
19 小时
发表于 2024-6-17 11:11:19 | 显示全部楼层
啥玩艺儿啊
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 10:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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