¼¾ÎÀ¶«£ºÖйúÊý×ÖµçÊÓÐÐÒµ½øÈë¸ßËÙÔö³¤ÆÚ

ÉùÃ÷£ºÌÚѶ¿Æ¼¼¿¯µÇ´ËÎÄÕÂΪ¡¶2007ÖйúITÁ½»á¡·»Ø¹Ë£¬¸ÃÎÄÕÂʱ¼äΪ07Äê12ÔÂ2ÈÕ¡£ ¸÷λÁìµ¼£¬¸÷λÅóÓÑ£¬¸÷λ¼Î±ö£¬·Ç³£¸ßÐËÔÚÕâÑùÒ»¸öÊ¢»áÀïºÍ´ó¼ÒÒ»ÆðÀ´·ÖÏíÖйúýÌåºÍ»¥ÁªÍø½«À´µÄһЩ·¢Õ¹Ç÷ÊÆºÍ·½Ïò¡£ ½ñ ...
#include "sys.h" #include "delay.h" #include "usart.h" #include "led.h" #include "lcd.h" #include "key.h" #include "sram.h" #include "malloc.h" #include "usmart.h" #include "sdio_sdcard.h" #include "malloc.h" #include "w25qxx.h" #include "ff.h" #include "exfuns.h" #include "fontupd.h" #include "text.h" #include "piclib.h" #include "string.h" #include "math.h" #include "dcmi.h" #include "ov2640.h" #include "beep.h" #include "timer.h" //ALIENTEK Ì&frac12;Ë÷ÕßSTM32F407¿ª·¢°å ʵÑé42 //ÕÕÏà»ú ʵÑé -¿âº¯Êý°æ±&frac34; //&frac14;&frac14;ÊõÖ§&sup3;Ö£ºwww.openedv.com //ÌÔ±¦µêÆÌ£ºhttp://eboard.taobao.com //&sup1;ãÖÝÊÐÐÇÒíµç×Ó¿Æ&frac14;&frac14;ÓÐÏÞ&sup1;«Ë&frac34; //×÷ÕߣºÕýµãÔ­×Ó @ALIENTEK u8 ov2640_mode=0; //&sup1;¤×÷Ä£Ê&frac12;:0,RGB565Ä£Ê&frac12;;1,JPEGÄ£Ê&frac12; #define jpeg_dma_bufsize 5*1024 //¶¨ÒåJPEG DMA&frac12;ÓÊÕʱÊý&frac34;Ý»º´æjpeg_buf0/1µÄ´óС(*4×Ö&frac12;Ú) volatile u32 jpeg_data_len=0; //bufÖеÄJPEGÓÐЧÊý&frac34;Ý&sup3;¤¶È(*4×Ö&frac12;Ú) volatile u8 jpeg_data_ok=0; //JPEGÊý&frac34;ݲÉ&frac14;¯Íê&sup3;ɱêÖ&frac34; //0,Êý&frac34;ÝûÓвÉ&frac14;¯Íê; //1,Êý&frac34;ݲÉ&frac14;¯ÍêÁË,µ«ÊÇ»&sup1;û´¦Àí; //2,Êý&frac34;ÝÒÑ&frac34;­´¦ÀíÍê&sup3;ÉÁË,¿ÉÒÔ¿ªÊ&frac14;ÏÂÒ»Ö¡&frac12;ÓÊÕ u32 *jpeg_buf0; //JPEGÊý&frac34;Ý»º´æbuf,ͨ&sup1;ýmallocÉêÇëÄÚ´æ u32 *jpeg_buf1; //JPEGÊý&frac34;Ý»º´æbuf,ͨ&sup1;ýmallocÉêÇëÄÚ´æ u32 *jpeg_data_buf; //JPEGÊý&frac34;Ý»º´æbuf,ͨ&sup1;ýmallocÉêÇëÄÚ´æ //´¦ÀíJPEGÊý&frac34;Ý //µ±²É&frac14;¯ÍêÒ»Ö¡JPEGÊý&frac34;ݺó,µ÷Óô˺¯Êý,Çл»JPEG BUF.¿ªÊ&frac14;ÏÂÒ»Ö¡²É&frac14;¯. void jpeg_data_process(void) { u16 i; u16 rlen;//Ê£ÓàÊý&frac34;Ý&sup3;¤¶È u32 *pbuf; if(ov2640_mode)//Ö»ÓÐÔÚJPEG¸ñÊ&frac12;ÏÂ,²ÅÐèÒª×ö´¦Àí. { if(jpeg_data_ok==0) //jpegÊý&frac34;Ý»&sup1;δ²É&frac14;¯Íê? { DMA_Cmd(DMA2_Stream1,DISABLE); //Í£Ö&sup1;µ±Ç°´«Êä while(DMA_GetCmdStatus(DMA2_Stream1) != DISABLE); //µÈ´ýDMA2_Stream1¿ÉÅäÖà rlen=jpeg_dma_bufsize-DMA_GetCurrDataCounter(DMA2_Stream1);//µÃµ&frac12;Ê£ÓàÊý&frac34;Ý&sup3;¤¶È pbuf=jpeg_data_buf+jpeg_data_len;//Æ«ÒÆµ&frac12;ÓÐЧÊý&frac34;Ýĩβ,&frac14;ÌÐøÌí&frac14;Ó if(DMA2_Stream1->CR&(1<<19))for(i=0;i<rlen;i++)pbuf[i]=jpeg_buf1[i];//¶ÁÈ¡buf1ÀïÃæµÄÊ£ÓàÊý&frac34;Ý else for(i=0;i<rlen;i++)pbuf[i]=jpeg_buf0[i];//¶ÁÈ¡buf0ÀïÃæµÄÊ£ÓàÊý&frac34;Ý jpeg_data_len+=rlen; //&frac14;ÓÉÏÊ£Óà&sup3;¤¶È jpeg_data
03-25
解释一下这段代码过程void CMP_ISR(void) interrupt 21 { u8 i; CMPCR1 &= ~0x40; // ÐèÈí&frac14;þÇå&sup3;ýÖжϱêÖ&frac34;λ if(XiaoCiCnt == 0) //Ïû´Åºó²Å&frac14;ì²â&sup10ÊÂ&frac14;þ, XiaoCiCnt=1:ÐèÒªÏû´Å, =2:ÕýÔÚÏû´Å, =0ÒÑ&frac34;­Ïû´Å { T4T3M &= ~(1<<3); // Timer3Í£Ö&sup1;ÔËÐÐ P27 = 0; if(B_Timer3_OverFlow) //Çл»Ê±&frac14;ä&frac14;ä¸ô(Timer3)ÓÐÒç&sup3;ö { B_Timer3_OverFlow = 0; PhaseTime = 8000; //»»Ïàʱ&frac14;ä×î´ó8ms, 2212µç»ú12V¿Õת×î¸ßËÙ130usÇл»Ò»Ïà(200RPS 12000RPM), 480mA } else { i=T3H; PhaseTime = (((u16)i << 8) + T3L) >> 1; //µ¥Î»Îª1us if(PhaseTime >= 8000) PhaseTime = 8000; //»»Ïàʱ&frac14;ä×î´ó8ms, 2212µç»ú12V¿Õת×î¸ßËÙ130usÇл»Ò»Ïà(200RPS 12000RPM), 480mA } T3H = 0; T3L = 0; T4T3M |= (1<<3); //Timer3¿ªÊ&frac14;ÔËÐÐ PhaseTimeTmp[TimeIndex] = PhaseTime; //±£´æÒ»´Î»»Ïàʱ&frac14;ä if(++TimeIndex >= 16) TimeIndex = 0; //ÀÛ&frac14;Ó8´Î for(PhaseTime=0, i=0; i<16; i++) PhaseTime += PhaseTimeTmp[i]; //Çó16´Î»»Ïàʱ&frac14;äÀÛ&frac14;ÓºÍ PhaseTime = PhaseTime >> 5; //Çó16´Î»»Ïàʱ&frac14;äµÄÆ&frac12;&frac34;ùÖµµÄÒ»°ë, &frac14;´30¶Èµç&frac12;Ç¶È if((PhaseTime >= 40) && (PhaseTime <= 1000)) TimeOut = 150; //¶Âת600ms&sup3;¬Ê± if( PhaseTime >= 60) PhaseTime -= 40; //ÐÞÕýÓÉÓÚÂ˲¨µçÈÝÒýÆðµÄÖͺóʱ&frac14;ä else PhaseTime = 20; // PhaseTime = 20; //Ö»¸ø20us, ÔòÎÞÖͺóÐÞÕý, ÓÃÓÚ&frac14;ì²âÂ˲¨µçÈÝÒýÆðµÄÖͺóʱ&frac14;ä T4T3M &= ~(1<<7); //Timer4Í£Ö&sup1;ÔËÐÐ PhaseTime = PhaseTime << 1; //2¸ö&frac14;ÆÊý1us PhaseTime = 0 - PhaseTime; T4H = (u8)(PhaseTime >> 8); //×°ÔØ30¶È&frac12;ÇÑÓʱ T4L = (u8)PhaseTime; T4T3M |= (1<<7); //Timer4¿ªÊ&frac14;ÔËÐÐ XiaoCiCnt = 1; //1:ÐèÒªÏû´Å, 2:ÕýÔÚÏû´Å, 0ÒÑ&frac34;­Ïû´Å P27 = 1; } }
07-08
/************************************************************************************** * Ö±Á÷µç»úʵÑé * ʵÏÖÏÖÏó£ºÏÂÔØ&sup3;ÌÐòºó£¬°´ÕÕ&sup1;âÅÌÄÚ²Ù×÷ÊÓÆµ&frac12;ÓÏߣ¬Ö±Á÷µç»úÐýת´óÔ&frac14;5S£¬È»ºóÍ£Ö&sup1; ×¢ÒâÊÂÏÎÞ ***************************************************************************************/ #include "reg52.h" //´ËÎÄ&frac14;þÖж¨ÒåÁ˵¥Æ¬»úµÄÒ»ÐÌØÊâ&sup1;¦ÄÜ&frac14;Ä´æÆ÷ #include<intrins.h> //ÒòΪҪÓõ&frac12;×óÓÒÒÆº¯Êý£¬ËùÒÔ&frac14;ÓÈëÕâ¸öÍ·ÎÄ&frac14;þ typedef unsigned int u16; //¶ÔÊý&frac34;ÝÀàÐÍ&frac12;øÐÐÉùÃ÷¶¨Òå typedef unsigned char u8; sbit moto=P1^0; /******************************************************************************* * º¯ Êý Ãû : delay * º¯Êý&sup1;¦ÄÜ : ÑÓʱº¯Êý£¬i=1ʱ£¬´óÔ&frac14;ÑÓʱ10us *******************************************************************************/ void delay(u16 i) { while(i--); } /******************************************************************************* * º¯ Êý Ãû : main * º¯Êý&sup1;¦ÄÜ : Ö÷º¯Êý * Êä Èë : ÎÞ * Êä &sup3;ö : ÎÞ *******************************************************************************/ void main() { u8 i; moto=0; //&sup1;رյç»ú for(i=0;i<100;i++) //Ñ­»·100´Î£¬Ò²&frac34;ÍÊÇ´óÔ&frac14;5S { moto=1; //¿ªÆôµç»ú delay(5000); //´óÔ&frac14;ÑÓʱ50ms } moto=0; //&sup1;رյç»ú while(1) { } } 将程序改成先正转5秒,停10秒,再反转5秒
06-10
#define USART_RXBUFF_SIZE 400 // //&frac12;ÓÊÕ»º&sup3;å,×î´ó400¸ö×Ö&frac12;Ú. u8 usart_rxBuff[USART_RXBUFF_SIZE]; u8 usart_rxBuffIndex = 0; UART_HandleTypeDef UART5_Handler; //UART&frac34;ä±ú //&sup3;õÊ&frac14;»¯IO ´®¿Ú2 //bound:²¨ÌØÂÊ void uart_init(u32 bound) { //UART &sup3;õÊ&frac14;»¯ÉèÖà UART5_Handler.Instance=UART5; //USART2 UART5_Handler.Init.BaudRate=bound; //²¨ÌØÂÊ UART5_Handler.Init.WordLength=UART_WORDLENGTH_8B; //×Ö&sup3;¤Îª8λÊý&frac34;ݸñÊ&frac12; UART5_Handler.Init.StopBits=UART_STOPBITS_1; //Ò»¸öÍ£Ö&sup1;λ UART5_Handler.Init.Parity=UART_PARITY_NONE; //ÎÞÆæÅ&frac14;УÑéλ UART5_Handler.Init.HwFlowCtl=UART_HWCONTROL_NONE; //ÎÞÓ²&frac14;þÁ÷¿Ø UART5_Handler.Init.Mode=UART_MODE_TX_RX; //ÊÕ·¢Ä£Ê&frac12; HAL_UART_Init(&UART5_Handler); //HAL_UART_Init()»áÊ&sup1;ÄÜUART2 // __HAL_UART_DISABLE_IT(&UART2_Handler, UART_IT_TXE); HAL_UART_Receive_IT(&UART5_Handler, (u8 *)usart_rxBuff, 1); // HAL_UART_Transmit_IT(&UART2_Handler, (u8 *)usart_rxBuff, 1);//¸Ãº¯Êý»á¿ªÆô&frac12;ÓÊÕÖжϣº±êÖ&frac34;λUART_IT_RXNE£¬²¢ÇÒÉèÖÃ&frac12;ÓÊÕ»º&sup3;åÒÔ&frac14;°&frac12;ÓÊÕ»º&sup3;å&frac12;ÓÊÕ×î´óÊý&frac34;ÝÁ¿ } //UARTµ×²ã&sup3;õÊ&frac14;»¯£¬Ê±ÖÓÊ&sup1;ÄÜ£¬Òý&frac12;ÅÅäÖã¬ÖжÏÅäÖà //´Ëº¯Êý»á±»HAL_UART_Init()µ÷Óà //huart:´®¿Ú&frac34;ä±ú void HAL_UART_MspInit(UART_HandleTypeDef *huart) { //GPIO¶Ë¿ÚÉèÖà GPIO_InitTypeDef GPIO_Initure; if(huart->Instance==UART5)//Èç&sup1;ûÊÇ´®¿Ú1£¬&frac12;øÐд®¿Ú1 MSP&sup3;õÊ&frac14;»¯ { __HAL_RCC_GPIOC_CLK_ENABLE(); //Ê&sup1;ÄÜGPIOAʱÖÓ __HAL_RCC_GPIOD_CLK_ENABLE(); //Ê&sup1;ÄÜGPIOAʱÖÓ __HAL_RCC_UART5_CLK_ENABLE(); //Ê&sup1;ÄÜUSART2ʱÖÓ __HAL_RCC_AFIO_CLK_ENABLE(); GPIO_Initure.Pin=GPIO_PIN_12; //PA2 GPIO_Initure.Mode=GPIO_MODE_AF_PP; //¸´ÓÃÍÆÍìÊä&sup3;ö GPIO_Initure.Pull=GPIO_PULLUP; //ÉÏÀ­ GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;//¸ßËÙ HAL_GPIO_Init(GPIOC,&GPIO_Initure); //&sup3;õÊ&frac14;»¯PA2 GPIO_Initure.Pin=GPIO_PIN_2; //PA3 GPIO_Initure.Mode=GPIO_MODE_AF_INPUT; //Ä£Ê&frac12;ÒªÉèÖÃΪ¸´ÓÃÊäÈëÄ£Ê&frac12;£¡ HAL_GPIO_Init(GPIOD,&GPIO_Initure); //&sup3;õÊ&frac14;»¯PA3 // GPIO_Initure.Pin=GPIO_PIN_6; //PA6 RS485_EN // GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; //ÍÆÍìÊä&sup3;ö // HAL_GPIO_Init(GPIOA,&GPIO_Initure); //&sup3;õÊ&frac14;»¯PA6 RS485_EN // // RS485_EN = 0; // À­µÍÊ&sup1;ÄÜ,&frac12;ÓÊÜÊý&frac34;Ý HAL_NVIC_EnableIRQ(UART5_IRQn); //Ê&sup1;ÄÜUSART2ÖжÏͨµÀ HAL_NVIC_SetPriority(UART5_IRQn,3,3); //ÇÀÕ&frac14;ÓÅÏÈ&frac14;¶3£¬×ÓÓÅÏÈ&frac14;¶3 } } //´®¿Ú2ÖжϷþÎñ&sup3;ÌÐò //×¢Òâ,¶ÁÈ¡USARTx->SRÄܱÜÃâĪÃûÆäÃîµÄ´íÎó static void Usart_PID_Handler(void); void UART5_IRQHandler(void) { u8 dat; OSIntEnter(); if(__HAL_UART_GET_FLAG(&UART5_Handler, UART_FLAG_RXNE)!=RESET) //&frac12;ÓÊÕÖжÏ(&frac12;ÓÊÕµ&frac12;µÄÊý&frac34;ݱØÐëÊÇ0x0d 0x0a&frac12;áβ) { //@100ms@100@0@0@101325Pa@101325Pa dat = UART5->DR; usart_rxBuff[usart_rxBuffIndex % USART_RXBUFF_SIZE] = dat; usart_rxBuffIndex++; if(usart_rxBuff[0] != &#39;@&#39;){usart_rxBuffIndex = 0;} if(dat == &#39;\n&#39;){ Usart_PID_Handler(); usart_rxBuffIndex = 0; } } OSIntExit(); } static u8 MyPrintfBuff[100]; void MyPrintf(char *format, ...) { uint16_t buf_len; va_list v_args; va_start(v_args, format); buf_len = vsnprintf((char *)&MyPrintfBuff[0], (size_t ) sizeof(MyPrintfBuff), (char const *) format, v_args); va_end(v_args); if(buf_len >= sizeof(MyPrintfBuff)){buf_len = sizeof(MyPrintfBuff);} // RS485_EN = 1; // À­¸ßÊ&sup1;ÄÜ,·¢ËÍÊý&frac34;Ý HAL_UART_Transmit(&UART5_Handler, MyPrintfBuff, buf_len, HAL_MAX_DELAY); // RS485_EN = 0; // À­µÍÊ&sup1;ÄÜ,&frac12;ÓÊÜÊý&frac34;Ý }修改为硬件为w5500模块的modbus-tcp协议
03-13
#include "guix.h" #include "touch.h" #include "text.h" #include "icos.h" ////////////////////////////////////////////////////////////////////////////////// //±&frac34;&sup3;ÌÐòÖ»&sup1;©Ñ§Ï°Ê&sup1;Óã¬Î´&frac34;­×÷ÕßÐí¿É£¬²»µÃÓÃÓÚÆäËüÈκÎÓÃÍ&frac34; //ALIENTEK STM32F407¿ª·¢°å //GUI-µ×²ãʵÏÖ ´úÂë //ÕýµãÔ­×Ó@ALIENTEK //&frac14;&frac14;ÊõÂÛÌ&sup3;:www.openedv.com //ÐÞ¸ÄÈÕÆÚ:2014/2/18 //°æ±&frac34;£ºV1.2 //°æÈ¨ËùÓУ¬µÁ°æ±Ø&frac34;¿¡£ //Copyright(C) &sup1;ãÖÝÊÐÐÇÒíµç×Ó¿Æ&frac14;&frac14;ÓÐÏÞ&sup1;«Ë&frac34; 2009-2019 //All rights reserved //******************************************************************************* //V1.1 20140218 //ÐÂÔögui_draw_blineº¯Êý //V1.2 20140801 //1,ÐÞ¸Ägui_show_ptcharºÍgui_show_ptfontº¯Êý,Ö§&sup3;Ö24*24×ÖÌ壨Êý×ÖÓë#¡¢*£¬Ö§&sup3;Ö¸ü´óµÄ×ÖÌ壩 //2,ÐÞ¸Ägui_show_ptcharºÍgui_show_ptfontº¯ÊýµÄoffset²ÎÊýΪu16. ////////////////////////////////////////////////////////////////////////////////// //´Ë´¦±ØÐëÔÚÍⲿÉêÃ÷asc2_1206ºÍasc2_1608; //#include "font.h" extern const unsigned char asc2_1206[95][12]; extern const unsigned char asc2_1608[95][16]; extern const unsigned char asc2_2412[95][36]; extern u8* asc2_2814; //ÆÕͨ×ÖÌå28*14´ó×ÖÌåµãÕó&frac14;¯ extern u8* asc2_3618; //ÆÕͨ×ÖÌå36*18´ó×ÖÌåµãÕó&frac14;¯ extern u8* asc2_5427; //ÆÕͨ×ÖÌå54*27´ó×ÖÌåµãÕó&frac14;¯ extern u8* asc2_s6030; //ÊýÂë&sup1;Ü×ÖÌå60*30´ó×ÖÌåµãÕó&frac14;¯ ////////////////////////////GUIͨÓÃ×Ö·û´®&frac14;¯////////////////////////////// //È·ÈÏ u8*const GUI_OK_CAPTION_TBL[GUI_LANGUAGE_NUM]= { "È·¶¨","´_¶¨","OK", }; //Ñ¡Ïî u8*const GUI_OPTION_CAPTION_TBL[GUI_LANGUAGE_NUM]= { "Ñ¡Ïî","ßxí—","MENU", }; //·µ»Ø u8*const GUI_BACK_CAPTION_TBL[GUI_LANGUAGE_NUM]= { "·µ»Ø","·µ»Ø","BACK", }; //È¡Ïû u8*const GUI_CANCEL_CAPTION_TBL[GUI_LANGUAGE_NUM]= { "È¡Ïû","È¡Ïû","CANCEL", }; //ÍË&sup3;ö u8*const GUI_QUIT_CAPTION_TBL[GUI_LANGUAGE_NUM]= { "ÍË&sup3;ö","ÍË&sup3;ö","QUIT", }; /////////////////////////////////////////////////////////////////////////// //ÊäÈë&frac12;Ó¿Ú _in_obj in_obj= { gui_get_key, //»ñÈ¡&frac14;üÖµ²ÎÊý 0, //×ø±ê 0, 0, //°´&frac14;ü&frac14;üÖµ IN_TYPE_ERR, //ÊäÈëÀàÐÍ,ĬÈÏ&frac34;ÍÊÇ´íÎóµÄ״̬ }; _gui_phy gui_phy; 在
最新发布
03-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值