<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=46&amp;t=18734&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-07-04T16:36:36+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=18734&amp;mode</id>
<entry>
<author><name><![CDATA[bastik]]></name></author>
<updated>2017-07-04T16:36:36+01:00</updated>
<published>2017-07-04T16:36:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18734&amp;p=191666#p191666</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18734&amp;p=191666#p191666"/>
<title type="html"><![CDATA[Re: Odwrotne działanie przycisku w dwóch podobnych programac]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18734&amp;p=191666#p191666"><![CDATA[
Dzięki zastosowałem podciąganie do Vcc i wszystko działa <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8145">bastik</a> — 4 lip 2017, o 16:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[QuadMan]]></name></author>
<updated>2017-07-02T22:44:43+01:00</updated>
<published>2017-07-02T22:44:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18734&amp;p=191586#p191586</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18734&amp;p=191586#p191586"/>
<title type="html"><![CDATA[Re: Odwrotne działanie przycisku w dwóch podobnych programac]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18734&amp;p=191586#p191586"><![CDATA[
Witam,<br /><br /> GPIO_Init(...) w STD Libs dla rodziny STM32F1xx jest trochę inne, niż dla tych nowszych uc. Jeśli potrzebujesz wejście z podciąganiem, to zamiast:[syntax=c]GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;[/syntax] musisz użyć:[syntax=c]GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;[/syntax] jeśli potrzebujesz podciągania do masy, albo [syntax=c]GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;[/syntax] jeśli potrzebne jest Ci podciąganie do Vcc.<br /><br />Pozdrawiam, QuadMan.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5291">QuadMan</a> — 2 lip 2017, o 22:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bastik]]></name></author>
<updated>2017-07-02T13:28:17+01:00</updated>
<published>2017-07-02T13:28:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18734&amp;p=191566#p191566</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18734&amp;p=191566#p191566"/>
<title type="html"><![CDATA[Re: Odwrotne działanie przycisku w dwóch podobnych programac]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18734&amp;p=191566#p191566"><![CDATA[
Zmieniłem wartości tak żeby wciśnięcie przycisku dawało 0, ale w tym przypadku wyświetla się napis &quot;Test0&quot; i dalej nie reaguje. Czasem samoczynnie po zostawieniu zestawu uruchomionego pojawiają się napisy &quot;test1&quot; i &quot;test2&quot;. Co do podciągania znalazłem informacje, że robi się to, przy użyciu tej funkcji<br />[syntax=c]GPIO_InitStructure.GPIO_PuPd          // ustawienie podciągnięcia[/syntax]<br /><br />Tylko że w moim pliku stm32f10x_gpio.h tego nie widzę:<br />[syntax=c]/**<br />  ******************************************************************************<br />  * @file    stm32f10x_gpio.h<br />  * @author  MCD Application Team<br />  * @version V3.5.0<br />  * @date    11-March-2011<br />  * @brief   This file contains all the functions prototypes for the GPIO <br />  *          firmware library.<br />  ******************************************************************************<br />  * @attention<br />  *<br />  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS<br />  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE<br />  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY<br />  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING<br />  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE<br />  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.<br />  *<br />  * &lt;h2&gt;&lt;center&gt;&amp;copy; COPYRIGHT 2011 STMicroelectronics&lt;/center&gt;&lt;/h2&gt;<br />  ******************************************************************************<br />  */<br /><br />/* Define to prevent recursive inclusion -------------------------------------*/<br />#ifndef __STM32F10x_GPIO_H<br />#define __STM32F10x_GPIO_H<br /><br />#ifdef __cplusplus<br /> extern &quot;C&quot; {<br />#endif<br /><br />/* Includes ------------------------------------------------------------------*/<br />#include &quot;stm32f10x.h&quot;<br /><br />/** @addtogroup STM32F10x_StdPeriph_Driver<br />  * @{<br />  */<br /><br />/** @addtogroup GPIO<br />  * @{<br />  */<br /><br />/** @defgroup GPIO_Exported_Types<br />  * @{<br />  */<br /><br />#define IS_GPIO_ALL_PERIPH(PERIPH) (((PERIPH) == GPIOA) || \<br />                                    ((PERIPH) == GPIOB) || \<br />                                    ((PERIPH) == GPIOC) || \<br />                                    ((PERIPH) == GPIOD) || \<br />                                    ((PERIPH) == GPIOE) || \<br />                                    ((PERIPH) == GPIOF) || \<br />                                    ((PERIPH) == GPIOG))<br />                                     <br />/** <br />  * @brief  Output Maximum frequency selection  <br />  */<br /><br />typedef enum<br />{ <br />  GPIO_Speed_10MHz = 1,<br />  GPIO_Speed_2MHz, <br />  GPIO_Speed_50MHz<br />}GPIOSpeed_TypeDef;<br />#define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_Speed_10MHz) || ((SPEED) == GPIO_Speed_2MHz) || \<br />                              ((SPEED) == GPIO_Speed_50MHz))<br /><br />/** <br />  * @brief  Configuration Mode enumeration  <br />  */<br /><br />typedef enum<br />{ GPIO_Mode_AIN = 0x0,<br />  GPIO_Mode_IN_FLOATING = 0x04,<br />  GPIO_Mode_IPD = 0x28,<br />  GPIO_Mode_IPU = 0x48,<br />  GPIO_Mode_Out_OD = 0x14,<br />  GPIO_Mode_Out_PP = 0x10,<br />  GPIO_Mode_AF_OD = 0x1C,<br />  GPIO_Mode_AF_PP = 0x18<br />}GPIOMode_TypeDef;<br /><br />#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_AIN) || ((MODE) == GPIO_Mode_IN_FLOATING) || \<br />                            ((MODE) == GPIO_Mode_IPD) || ((MODE) == GPIO_Mode_IPU) || \<br />                            ((MODE) == GPIO_Mode_Out_OD) || ((MODE) == GPIO_Mode_Out_PP) || \<br />                            ((MODE) == GPIO_Mode_AF_OD) || ((MODE) == GPIO_Mode_AF_PP))<br /><br />/** <br />  * @brief  GPIO Init structure definition  <br />  */<br /><br />typedef struct<br />{<br />  uint16_t GPIO_Pin;             /*!&lt; Specifies the GPIO pins to be configured.<br />                                      This parameter can be any value of @ref GPIO_pins_define */<br /><br />  GPIOSpeed_TypeDef GPIO_Speed;  /*!&lt; Specifies the speed for the selected pins.<br />                                      This parameter can be a value of @ref GPIOSpeed_TypeDef */<br /><br />  GPIOMode_TypeDef GPIO_Mode;    /*!&lt; Specifies the operating mode for the selected pins.<br />                                      This parameter can be a value of @ref GPIOMode_TypeDef */<br />}GPIO_InitTypeDef;<br /><br /><br />/** <br />  * @brief  Bit_SET and Bit_RESET enumeration  <br />  */<br /><br />typedef enum<br />{ Bit_RESET = 0,<br />  Bit_SET<br />}BitAction;<br /><br />#define IS_GPIO_BIT_ACTION(ACTION) (((ACTION) == Bit_RESET) || ((ACTION) == Bit_SET))<br /><br />/**<br />  * @}<br />  */<br /><br />/** @defgroup GPIO_Exported_Constants<br />  * @{<br />  */<br /><br />/** @defgroup GPIO_pins_define <br />  * @{<br />  */<br /><br />#define GPIO_Pin_0                 ((uint16_t)0x0001)  /*!&lt; Pin 0 selected */<br />#define GPIO_Pin_1                 ((uint16_t)0x0002)  /*!&lt; Pin 1 selected */<br />#define GPIO_Pin_2                 ((uint16_t)0x0004)  /*!&lt; Pin 2 selected */<br />#define GPIO_Pin_3                 ((uint16_t)0x0008)  /*!&lt; Pin 3 selected */<br />#define GPIO_Pin_4                 ((uint16_t)0x0010)  /*!&lt; Pin 4 selected */<br />#define GPIO_Pin_5                 ((uint16_t)0x0020)  /*!&lt; Pin 5 selected */<br />#define GPIO_Pin_6                 ((uint16_t)0x0040)  /*!&lt; Pin 6 selected */<br />#define GPIO_Pin_7                 ((uint16_t)0x0080)  /*!&lt; Pin 7 selected */<br />#define GPIO_Pin_8                 ((uint16_t)0x0100)  /*!&lt; Pin 8 selected */<br />#define GPIO_Pin_9                 ((uint16_t)0x0200)  /*!&lt; Pin 9 selected */<br />#define GPIO_Pin_10                ((uint16_t)0x0400)  /*!&lt; Pin 10 selected */<br />#define GPIO_Pin_11                ((uint16_t)0x0800)  /*!&lt; Pin 11 selected */<br />#define GPIO_Pin_12                ((uint16_t)0x1000)  /*!&lt; Pin 12 selected */<br />#define GPIO_Pin_13                ((uint16_t)0x2000)  /*!&lt; Pin 13 selected */<br />#define GPIO_Pin_14                ((uint16_t)0x4000)  /*!&lt; Pin 14 selected */<br />#define GPIO_Pin_15                ((uint16_t)0x8000)  /*!&lt; Pin 15 selected */<br />#define GPIO_Pin_All               ((uint16_t)0xFFFF)  /*!&lt; All pins selected */<br /><br />#define IS_GPIO_PIN(PIN) ((((PIN) &amp; (uint16_t)0x00) == 0x00) &amp;&amp; ((PIN) != (uint16_t)0x00))<br /><br />#define IS_GET_GPIO_PIN(PIN) (((PIN) == GPIO_Pin_0) || \<br />                              ((PIN) == GPIO_Pin_1) || \<br />                              ((PIN) == GPIO_Pin_2) || \<br />                              ((PIN) == GPIO_Pin_3) || \<br />                              ((PIN) == GPIO_Pin_4) || \<br />                              ((PIN) == GPIO_Pin_5) || \<br />                              ((PIN) == GPIO_Pin_6) || \<br />                              ((PIN) == GPIO_Pin_7) || \<br />                              ((PIN) == GPIO_Pin_8) || \<br />                              ((PIN) == GPIO_Pin_9) || \<br />                              ((PIN) == GPIO_Pin_10) || \<br />                              ((PIN) == GPIO_Pin_11) || \<br />                              ((PIN) == GPIO_Pin_12) || \<br />                              ((PIN) == GPIO_Pin_13) || \<br />                              ((PIN) == GPIO_Pin_14) || \<br />                              ((PIN) == GPIO_Pin_15))<br /><br />/**<br />  * @}<br />  */<br /><br />/** @defgroup GPIO_Remap_define <br />  * @{<br />  */<br /><br />#define GPIO_Remap_SPI1             ((uint32_t)0x00000001)  /*!&lt; SPI1 Alternate Function mapping */<br />#define GPIO_Remap_I2C1             ((uint32_t)0x00000002)  /*!&lt; I2C1 Alternate Function mapping */<br />#define GPIO_Remap_USART1           ((uint32_t)0x00000004)  /*!&lt; USART1 Alternate Function mapping */<br />#define GPIO_Remap_USART2           ((uint32_t)0x00000008)  /*!&lt; USART2 Alternate Function mapping */<br />#define GPIO_PartialRemap_USART3    ((uint32_t)0x00140010)  /*!&lt; USART3 Partial Alternate Function mapping */<br />#define GPIO_FullRemap_USART3       ((uint32_t)0x00140030)  /*!&lt; USART3 Full Alternate Function mapping */<br />#define GPIO_PartialRemap_TIM1      ((uint32_t)0x00160040)  /*!&lt; TIM1 Partial Alternate Function mapping */<br />#define GPIO_FullRemap_TIM1         ((uint32_t)0x001600C0)  /*!&lt; TIM1 Full Alternate Function mapping */<br />#define GPIO_PartialRemap1_TIM2     ((uint32_t)0x00180100)  /*!&lt; TIM2 Partial1 Alternate Function mapping */<br />#define GPIO_PartialRemap2_TIM2     ((uint32_t)0x00180200)  /*!&lt; TIM2 Partial2 Alternate Function mapping */<br />#define GPIO_FullRemap_TIM2         ((uint32_t)0x00180300)  /*!&lt; TIM2 Full Alternate Function mapping */<br />#define GPIO_PartialRemap_TIM3      ((uint32_t)0x001A0800)  /*!&lt; TIM3 Partial Alternate Function mapping */<br />#define GPIO_FullRemap_TIM3         ((uint32_t)0x001A0C00)  /*!&lt; TIM3 Full Alternate Function mapping */<br />#define GPIO_Remap_TIM4             ((uint32_t)0x00001000)  /*!&lt; TIM4 Alternate Function mapping */<br />#define GPIO_Remap1_CAN1            ((uint32_t)0x001D4000)  /*!&lt; CAN1 Alternate Function mapping */<br />#define GPIO_Remap2_CAN1            ((uint32_t)0x001D6000)  /*!&lt; CAN1 Alternate Function mapping */<br />#define GPIO_Remap_PD01             ((uint32_t)0x00008000)  /*!&lt; PD01 Alternate Function mapping */<br />#define GPIO_Remap_TIM5CH4_LSI      ((uint32_t)0x00200001)  /*!&lt; LSI connected to TIM5 Channel4 input capture for calibration */<br />#define GPIO_Remap_ADC1_ETRGINJ     ((uint32_t)0x00200002)  /*!&lt; ADC1 External Trigger Injected Conversion remapping */<br />#define GPIO_Remap_ADC1_ETRGREG     ((uint32_t)0x00200004)  /*!&lt; ADC1 External Trigger Regular Conversion remapping */<br />#define GPIO_Remap_ADC2_ETRGINJ     ((uint32_t)0x00200008)  /*!&lt; ADC2 External Trigger Injected Conversion remapping */<br />#define GPIO_Remap_ADC2_ETRGREG     ((uint32_t)0x00200010)  /*!&lt; ADC2 External Trigger Regular Conversion remapping */<br />#define GPIO_Remap_ETH              ((uint32_t)0x00200020)  /*!&lt; Ethernet remapping (only for Connectivity line devices) */<br />#define GPIO_Remap_CAN2             ((uint32_t)0x00200040)  /*!&lt; CAN2 remapping (only for Connectivity line devices) */<br />#define GPIO_Remap_SWJ_NoJTRST      ((uint32_t)0x00300100)  /*!&lt; Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST */<br />#define GPIO_Remap_SWJ_JTAGDisable  ((uint32_t)0x00300200)  /*!&lt; JTAG-DP Disabled and SW-DP Enabled */<br />#define GPIO_Remap_SWJ_Disable      ((uint32_t)0x00300400)  /*!&lt; Full SWJ Disabled (JTAG-DP + SW-DP) */<br />#define GPIO_Remap_SPI3             ((uint32_t)0x00201100)  /*!&lt; SPI3/I2S3 Alternate Function mapping (only for Connectivity line devices) */<br />#define GPIO_Remap_TIM2ITR1_PTP_SOF ((uint32_t)0x00202000)  /*!&lt; Ethernet PTP output or USB OTG SOF (Start of Frame) connected<br />                                                                 to TIM2 Internal Trigger 1 for calibration<br />                                                                 (only for Connectivity line devices) */<br />#define GPIO_Remap_PTP_PPS          ((uint32_t)0x00204000)  /*!&lt; Ethernet MAC PPS_PTS output on PB05 (only for Connectivity line devices) */<br /><br />#define GPIO_Remap_TIM15            ((uint32_t)0x80000001)  /*!&lt; TIM15 Alternate Function mapping (only for Value line devices) */<br />#define GPIO_Remap_TIM16            ((uint32_t)0x80000002)  /*!&lt; TIM16 Alternate Function mapping (only for Value line devices) */<br />#define GPIO_Remap_TIM17            ((uint32_t)0x80000004)  /*!&lt; TIM17 Alternate Function mapping (only for Value line devices) */<br />#define GPIO_Remap_CEC              ((uint32_t)0x80000008)  /*!&lt; CEC Alternate Function mapping (only for Value line devices) */<br />#define GPIO_Remap_TIM1_DMA         ((uint32_t)0x80000010)  /*!&lt; TIM1 DMA requests mapping (only for Value line devices) */<br /><br />#define GPIO_Remap_TIM9             ((uint32_t)0x80000020)  /*!&lt; TIM9 Alternate Function mapping (only for XL-density devices) */<br />#define GPIO_Remap_TIM10            ((uint32_t)0x80000040)  /*!&lt; TIM10 Alternate Function mapping (only for XL-density devices) */<br />#define GPIO_Remap_TIM11            ((uint32_t)0x80000080)  /*!&lt; TIM11 Alternate Function mapping (only for XL-density devices) */<br />#define GPIO_Remap_TIM13            ((uint32_t)0x80000100)  /*!&lt; TIM13 Alternate Function mapping (only for High density Value line and XL-density devices) */<br />#define GPIO_Remap_TIM14            ((uint32_t)0x80000200)  /*!&lt; TIM14 Alternate Function mapping (only for High density Value line and XL-density devices) */<br />#define GPIO_Remap_FSMC_NADV        ((uint32_t)0x80000400)  /*!&lt; FSMC_NADV Alternate Function mapping (only for High density Value line and XL-density devices) */<br /><br />#define GPIO_Remap_TIM67_DAC_DMA    ((uint32_t)0x80000800)  /*!&lt; TIM6/TIM7 and DAC DMA requests remapping (only for High density Value line devices) */<br />#define GPIO_Remap_TIM12            ((uint32_t)0x80001000)  /*!&lt; TIM12 Alternate Function mapping (only for High density Value line devices) */<br />#define GPIO_Remap_MISC             ((uint32_t)0x80002000)  /*!&lt; Miscellaneous Remap (DMA2 Channel5 Position and DAC Trigger remapping, <br />                                                                 only for High density Value line devices) */                                                       <br /><br />#define IS_GPIO_REMAP(REMAP) (((REMAP) == GPIO_Remap_SPI1) || ((REMAP) == GPIO_Remap_I2C1) || \<br />                              ((REMAP) == GPIO_Remap_USART1) || ((REMAP) == GPIO_Remap_USART2) || \<br />                              ((REMAP) == GPIO_PartialRemap_USART3) || ((REMAP) == GPIO_FullRemap_USART3) || \<br />                              ((REMAP) == GPIO_PartialRemap_TIM1) || ((REMAP) == GPIO_FullRemap_TIM1) || \<br />                              ((REMAP) == GPIO_PartialRemap1_TIM2) || ((REMAP) == GPIO_PartialRemap2_TIM2) || \<br />                              ((REMAP) == GPIO_FullRemap_TIM2) || ((REMAP) == GPIO_PartialRemap_TIM3) || \<br />                              ((REMAP) == GPIO_FullRemap_TIM3) || ((REMAP) == GPIO_Remap_TIM4) || \<br />                              ((REMAP) == GPIO_Remap1_CAN1) || ((REMAP) == GPIO_Remap2_CAN1) || \<br />                              ((REMAP) == GPIO_Remap_PD01) || ((REMAP) == GPIO_Remap_TIM5CH4_LSI) || \<br />                              ((REMAP) == GPIO_Remap_ADC1_ETRGINJ) ||((REMAP) == GPIO_Remap_ADC1_ETRGREG) || \<br />                              ((REMAP) == GPIO_Remap_ADC2_ETRGINJ) ||((REMAP) == GPIO_Remap_ADC2_ETRGREG) || \<br />                              ((REMAP) == GPIO_Remap_ETH) ||((REMAP) == GPIO_Remap_CAN2) || \<br />                              ((REMAP) == GPIO_Remap_SWJ_NoJTRST) || ((REMAP) == GPIO_Remap_SWJ_JTAGDisable) || \<br />                              ((REMAP) == GPIO_Remap_SWJ_Disable)|| ((REMAP) == GPIO_Remap_SPI3) || \<br />                              ((REMAP) == GPIO_Remap_TIM2ITR1_PTP_SOF) || ((REMAP) == GPIO_Remap_PTP_PPS) || \<br />                              ((REMAP) == GPIO_Remap_TIM15) || ((REMAP) == GPIO_Remap_TIM16) || \<br />                              ((REMAP) == GPIO_Remap_TIM17) || ((REMAP) == GPIO_Remap_CEC) || \<br />                              ((REMAP) == GPIO_Remap_TIM1_DMA) || ((REMAP) == GPIO_Remap_TIM9) || \<br />                              ((REMAP) == GPIO_Remap_TIM10) || ((REMAP) == GPIO_Remap_TIM11) || \<br />                              ((REMAP) == GPIO_Remap_TIM13) || ((REMAP) == GPIO_Remap_TIM14) || \<br />                              ((REMAP) == GPIO_Remap_FSMC_NADV) || ((REMAP) == GPIO_Remap_TIM67_DAC_DMA) || \<br />                              ((REMAP) == GPIO_Remap_TIM12) || ((REMAP) == GPIO_Remap_MISC))<br />                              <br />/**<br />  * @}<br />  */ <br /><br />/** @defgroup GPIO_Port_Sources <br />  * @{<br />  */<br /><br />#define GPIO_PortSourceGPIOA       ((uint8_t)0x00)<br />#define GPIO_PortSourceGPIOB       ((uint8_t)0x01)<br />#define GPIO_PortSourceGPIOC       ((uint8_t)0x02)<br />#define GPIO_PortSourceGPIOD       ((uint8_t)0x03)<br />#define GPIO_PortSourceGPIOE       ((uint8_t)0x04)<br />#define GPIO_PortSourceGPIOF       ((uint8_t)0x05)<br />#define GPIO_PortSourceGPIOG       ((uint8_t)0x06)<br />#define IS_GPIO_EVENTOUT_PORT_SOURCE(PORTSOURCE) (((PORTSOURCE) == GPIO_PortSourceGPIOA) || \<br />                                                  ((PORTSOURCE) == GPIO_PortSourceGPIOB) || \<br />                                                  ((PORTSOURCE) == GPIO_PortSourceGPIOC) || \<br />                                                  ((PORTSOURCE) == GPIO_PortSourceGPIOD) || \<br />                                                  ((PORTSOURCE) == GPIO_PortSourceGPIOE))<br /><br />#define IS_GPIO_EXTI_PORT_SOURCE(PORTSOURCE) (((PORTSOURCE) == GPIO_PortSourceGPIOA) || \<br />                                              ((PORTSOURCE) == GPIO_PortSourceGPIOB) || \<br />                                              ((PORTSOURCE) == GPIO_PortSourceGPIOC) || \<br />                                              ((PORTSOURCE) == GPIO_PortSourceGPIOD) || \<br />                                              ((PORTSOURCE) == GPIO_PortSourceGPIOE) || \<br />                                              ((PORTSOURCE) == GPIO_PortSourceGPIOF) || \<br />                                              ((PORTSOURCE) == GPIO_PortSourceGPIOG))<br /><br />/**<br />  * @}<br />  */<br /><br />/** @defgroup GPIO_Pin_sources <br />  * @{<br />  */<br /><br />#define GPIO_PinSource0            ((uint8_t)0x00)<br />#define GPIO_PinSource1            ((uint8_t)0x01)<br />#define GPIO_PinSource2            ((uint8_t)0x02)<br />#define GPIO_PinSource3            ((uint8_t)0x03)<br />#define GPIO_PinSource4            ((uint8_t)0x04)<br />#define GPIO_PinSource5            ((uint8_t)0x05)<br />#define GPIO_PinSource6            ((uint8_t)0x06)<br />#define GPIO_PinSource7            ((uint8_t)0x07)<br />#define GPIO_PinSource8            ((uint8_t)0x08)<br />#define GPIO_PinSource9            ((uint8_t)0x09)<br />#define GPIO_PinSource10           ((uint8_t)0x0A)<br />#define GPIO_PinSource11           ((uint8_t)0x0B)<br />#define GPIO_PinSource12           ((uint8_t)0x0C)<br />#define GPIO_PinSource13           ((uint8_t)0x0D)<br />#define GPIO_PinSource14           ((uint8_t)0x0E)<br />#define GPIO_PinSource15           ((uint8_t)0x0F)<br /><br />#define IS_GPIO_PIN_SOURCE(PINSOURCE) (((PINSOURCE) == GPIO_PinSource0) || \<br />                                       ((PINSOURCE) == GPIO_PinSource1) || \<br />                                       ((PINSOURCE) == GPIO_PinSource2) || \<br />                                       ((PINSOURCE) == GPIO_PinSource3) || \<br />                                       ((PINSOURCE) == GPIO_PinSource4) || \<br />                                       ((PINSOURCE) == GPIO_PinSource5) || \<br />                                       ((PINSOURCE) == GPIO_PinSource6) || \<br />                                       ((PINSOURCE) == GPIO_PinSource7) || \<br />                                       ((PINSOURCE) == GPIO_PinSource8) || \<br />                                       ((PINSOURCE) == GPIO_PinSource9) || \<br />                                       ((PINSOURCE) == GPIO_PinSource10) || \<br />                                       ((PINSOURCE) == GPIO_PinSource11) || \<br />                                       ((PINSOURCE) == GPIO_PinSource12) || \<br />                                       ((PINSOURCE) == GPIO_PinSource13) || \<br />                                       ((PINSOURCE) == GPIO_PinSource14) || \<br />                                       ((PINSOURCE) == GPIO_PinSource15))<br /><br />/**<br />  * @}<br />  */<br /><br />/** @defgroup Ethernet_Media_Interface <br />  * @{<br />  */ <br />#define GPIO_ETH_MediaInterface_MII    ((u32)0x00000000) <br />#define GPIO_ETH_MediaInterface_RMII   ((u32)0x00000001)                                       <br /><br />#define IS_GPIO_ETH_MEDIA_INTERFACE(INTERFACE) (((INTERFACE) == GPIO_ETH_MediaInterface_MII) || \<br />                                                ((INTERFACE) == GPIO_ETH_MediaInterface_RMII))<br /><br />/**<br />  * @}<br />  */                                                <br />/**<br />  * @}<br />  */<br /><br />/** @defgroup GPIO_Exported_Macros<br />  * @{<br />  */<br /><br />/**<br />  * @}<br />  */<br /><br />/** @defgroup GPIO_Exported_Functions<br />  * @{<br />  */<br /><br />void GPIO_DeInit(GPIO_TypeDef* GPIOx);<br />void GPIO_AFIODeInit(void);<br />void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);<br />void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);<br />uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);<br />uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);<br />uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);<br />uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);<br />void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);<br />void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);<br />void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);<br />void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);<br />void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);<br />void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);<br />void GPIO_EventOutputCmd(FunctionalState NewState);<br />void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);<br />void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);<br />void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface);<br /><br />#ifdef __cplusplus<br />}<br />#endif<br /><br />#endif /* __STM32F10x_GPIO_H */<br />/**<br />  * @}<br />  */<br /><br />/**<br />  * @}<br />  */<br /><br />/**<br />  * @}<br />  */<br /><br />/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8145">bastik</a> — 2 lip 2017, o 13:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2017-07-02T10:10:47+01:00</updated>
<published>2017-07-02T10:10:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18734&amp;p=191557#p191557</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18734&amp;p=191557#p191557"/>
<title type="html"><![CDATA[Re: Odwrotne działanie przycisku w dwóch podobnych programac]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18734&amp;p=191557#p191557"><![CDATA[
A przycisk masz podpięty tak jak w przykładzie? Z tego, co widzę, przycisk masz bez podciągnięcia wewnętrznego. Nie wiem, jak jest w nucleo, ale może spróbuj odwrócić reakcję na przycisk (dobrze widzę, jest na stan wysoki?) Spróbuj zmienić na reakcję na stan niski. O ile się nie mylę, w dwóch miejscach musisz poprawić, w funkcjach obsługi przerwań<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 2 lip 2017, o 10:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bastik]]></name></author>
<updated>2017-07-01T21:53:14+01:00</updated>
<published>2017-07-01T21:53:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18734&amp;p=191545#p191545</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18734&amp;p=191545#p191545"/>
<title type="html"><![CDATA[Odwrotne działanie przycisku w dwóch podobnych programach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18734&amp;p=191545#p191545"><![CDATA[
Witam<br />Kolejny temat i kolejny problem, potrzebuje zrobić programową eliminację drgań styków. Wykorzystałem przykład z książki Paprockiego, ok super działa licznik.<br /><br />main.c<br />[syntax=c]#include &quot;stm32f10x.h&quot;<br />#include &quot;lcd4bit.h&quot;<br />#include &lt;stdio.h&gt;<br /><br />void RCC_Conf(void);<br />void GPIO_Conf(void);<br />void NVIC_Conf(void);<br />void EXTI_Conf(void);<br /><br />__IO uint16_t klikniecie;<br /><br />#define tak 1<br />#define nie 0<br /><br />uint16_t licznik=1;<br />char s_licznik&#91;3&#93;;<br /><br />int main(void)<br />{<br />TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;<br />TIM_OCInitTypeDef  TIM_OCInitStructure;<br />#ifdef DEBUG<br />  debug();<br />#endif <br />  RCC_Conf();   <br />  NVIC_Conf();<br />  GPIO_Conf();<br />  EXTI_Conf();<br /><br />  // Ustawienia ukladu podstawy czasu<br />  TIM_TimeBaseStructure.TIM_Period = 10000;<br />  TIM_TimeBaseStructure.TIM_Prescaler = 24000;  //fclk = 72MHz/24001 =okolo 3kHz<br />  TIM_TimeBaseStructure.TIM_ClockDivision = 0;<br />  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;<br /><br />  TIM_TimeBaseInit(TIM2, &amp;TIM_TimeBaseStructure);<br /><br />  // Konfiguracja kanalu 1<br />  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing;<br />  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;<br />  TIM_OCInitStructure.TIM_Pulse = 200;   // okolo 60ms<br />  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;<br />  TIM_OC1Init(TIM2, &amp;TIM_OCInitStructure);<br /><br />  TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Disable);<br /><br />  // Wlaczenie przerwan od kanalu 1<br />  TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE);<br />  <br />LCD_Init();<br />LCD_Clear();<br /><br />   LCD_SendText(&quot;000&quot;);<br /><br />  while (1)<br />  {<br />  if(klikniecie == tak)<br />{<br />sprintf(s_licznik, &quot;%03d&quot;, licznik++);<br />LCD_Clear();<br />LCD_GoTo(0,0);<br />LCD_SendText((uint8_t*)s_licznik);<br />klikniecie = nie;<br />}<br />  }<br />}<br /><br />void RCC_Conf(void)<br />{  <br />  ErrorStatus HSEStartUpStatus; <br /><br />  // Reset ustawien RCC<br />  RCC_DeInit();<br /><br />  // Wlacz HSE<br />  RCC_HSEConfig(RCC_HSE_ON);<br /><br />  // Czekaj za HSE bedzie gotowy<br />  HSEStartUpStatus = RCC_WaitForHSEStartUp();<br /><br />  if(HSEStartUpStatus == SUCCESS)<br />  {<br />    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);<br /><br />    // zwloka dla pamieci Flash<br />    FLASH_SetLatency(FLASH_Latency_2);<br /> <br />  // HCLK = SYSCLK<br />    RCC_HCLKConfig(RCC_SYSCLK_Div1); <br />  <br />    // PCLK2 = HCLK<br />    RCC_PCLK2Config(RCC_HCLK_Div1); <br /><br />    // PCLK1 = HCLK/2<br />    RCC_PCLK1Config(RCC_HCLK_Div2);<br /><br />    // PLLCLK = 8MHz * 9 = 72 MHz<br />    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);<br /><br />    // Wlacz PLL <br />    RCC_PLLCmd(ENABLE);<br /><br />    // Czekaj az PLL poprawnie sie uruchomi<br />    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);<br /><br />    // PLL bedzie zrodlem sygnalu zegarowego<br />    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);<br /><br />    // Czekaj az PLL bedzie sygnalem zegarowym systemu<br />    while(RCC_GetSYSCLKSource() != 0x08);<br />  }<br />    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);<br />RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);<br />}<br /><br />void GPIO_Conf(void)<br />{<br />  GPIO_InitTypeDef GPIO_InitStructure;<br /><br />  // Porty PB8, PB9, PB10, PB11 jako wyjscia push - pull<br />  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;<br />  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;<br />  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<br /><br />  GPIO_Init(GPIOA, &amp;GPIO_InitStructure);<br />}<br /><br />void EXTI_Conf(void)<br />{<br />EXTI_InitTypeDef EXTI_InitStructure;<br />  // Poinformowanie uC o zrodle przerwania<br />GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);<br /><br />  // Bedzie generowane przerwanie na zboczu opadajacym na EXTI_Line9<br />  EXTI_InitStructure.EXTI_Line = EXTI_Line0;<br />  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;<br />  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;<br />  EXTI_InitStructure.EXTI_LineCmd = ENABLE;<br />  EXTI_Init(&amp;EXTI_InitStructure);<br />}<br /><br />void NVIC_Conf(void)<br />{<br />NVIC_InitTypeDef NVIC_InitStructure;<br /><br />#ifdef  VECT_TAB_RAM  <br />  // Jezeli tablica wektorow w RAM, to ustaw jej adres na 0x20000000<br />  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); <br />#else  // VECT_TAB_FLASH<br />  // W przeciwnym wypadku ustaw na 0x08000000<br />  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   <br />#endif<br /><br />  // Wlacz przerwanie od TIM1<br />  NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;<br />  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;<br />  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;<br />  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;<br />  NVIC_Init(&amp;NVIC_InitStructure);<br /><br />  NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;<br />  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;<br />  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;<br />  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;<br />  NVIC_Init(&amp;NVIC_InitStructure);<br />}<br /><br />#ifdef  DEBUG<br />void assert_failed(uint8_t* file, uint32_t line)<br />{ <br />  while (1);<br />}<br />#endif[/syntax]<br /><br />i obsługa przerwań<br />[syntax=c]void TIM2_IRQHandler(void)<br />{<br />  if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET)<br />  {<br />TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);<br />if(!GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) )<br />klikniecie = tak;<br />else<br />klikniecie = nie;<br /><br />   // wylacz licznik<br />TIM_Cmd(TIM2, DISABLE); <br />// oraz jego przerwanie <br />TIM_ITConfig(TIM2, TIM_IT_CC1, DISABLE);  <br />  }<br />}<br /><br />void EXTI0_IRQHandler(void)<br />{<br />  if(EXTI_GetITStatus(EXTI_Line0) != RESET)<br />  {<br />    // Czyszczenie flagi przerwania<br />    EXTI_ClearITPendingBit(EXTI_Line0);<br /><br />TIM_SetCompare1(TIM2, 200); // okolo 60ms<br />TIM_SetCounter(TIM2, 0);  // zeruj licznik<br /><br />      // Wlaczenie timera<br />  TIM_Cmd(TIM2, ENABLE);<br />// oraz jego przerwania<br />TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE);<br />  }<br />}[/syntax]<br /><br />Natomiast w moim programie tekst, który powinien wyświetlić się po naciśnięciu przycisku wyświetla się od razu, chyba, że trzymam wciśnięty przycisk i zresetuje Nucleo. Wtedy tekst wyświetla się dopiero jak puszczę przycisk. Część kodu do obsługi przycisku jest taka sama, nie wiem, o co w tym chodzi. Podpowiedzcie mi gdzie mam błąd <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />Mój kod main.c<br />[syntax=c]/**<br />  ******************************************************************************<br />  * @file    main.c <br />  * @author  MCD Application Team<br />  * @version V1.2.0<br />  * @date    11-April-2014<br />  * @brief   Main program body<br />  ******************************************************************************<br />  * @attention<br />  *<br />  ******************************************************************************<br />  */<br /> <br />/* Includes ------------------------------------------------------------------*/<br />#include &quot;main.h&quot;<br /><br /><br />/** @addtogroup Template<br />  * @{<br />  */ <br /><br />/* Private typedef -----------------------------------------------------------*/<br />/* Private define ------------------------------------------------------------*/<br /><br />#define BufferSize 32<br />#define SEND_LIMIT 3<br />#define tak 1<br />#define nie 0<br />/* Private macro -------------------------------------------------------------*/<br />/* Private variables ---------------------------------------------------------*/<br /><br />GPIO_InitTypeDef GPIO_InitStructure;<br />SPI_InitTypeDef   SPI_InitStructure;<br /><br /><br />__IO uint8_t TxIdx = 0, RxIdx = 0, k = 0;<br />__IO uint16_t klikniecie;<br />/* Private function prototypes -----------------------------------------------*/<br />void RCC_Conf(void);<br />void GPIO_Conf(void);<br />void NVIC_Conf(void);<br />void EXTI_Conf(void);<br />/* Private functions ---------------------------------------------------------*/<br /><br />/**<br />  * @brief   Main program<br />  * @param  None<br />  * @retval None<br />  */<br /><br /><br />int main(void)<br />{<br />TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;<br />TIM_OCInitTypeDef  TIM_OCInitStructure;<br />#ifdef DEBUG<br />  debug();<br />#endif <br />  RCC_Conf();   <br />  NVIC_Conf();<br />  GPIO_Conf();<br />  EXTI_Conf();<br /><br />  // Ustawienia ukladu podstawy czasu<br />  TIM_TimeBaseStructure.TIM_Period = 10;<br />  TIM_TimeBaseStructure.TIM_Prescaler = 24000;  //fclk = 72MHz/24001 =okolo 3kHz<br />  TIM_TimeBaseStructure.TIM_ClockDivision = 0;<br />  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;<br /><br />  TIM_TimeBaseInit(TIM2, &amp;TIM_TimeBaseStructure);<br /><br />  // Konfiguracja kanalu 1<br />  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing;<br />  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;<br />  TIM_OCInitStructure.TIM_Pulse = 200;   // okolo 60ms<br />  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;<br />  TIM_OC1Init(TIM2, &amp;TIM_OCInitStructure);<br /><br />  TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Disable);<br /><br />  // Wlaczenie przerwan od kanalu 1<br />  TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE);<br />  <br />lcdInit();<br />Delay(100);<br /><br />toLine1();<br />printString(&quot;   Test0   &quot;);<br /><br />  while (1)<br />  {<br />  if(klikniecie == tak)<br />{<br />toLine1();<br />printString(&quot;   Test1   &quot;);<br />toLine2();<br />printString(&quot;Test2&quot;);<br />klikniecie = nie;<br />}<br />  }<br />}<br /><br />void RCC_Conf(void)<br />{  <br />  ErrorStatus HSEStartUpStatus; <br /><br />  // Reset ustawien RCC<br />  RCC_DeInit();<br /><br />  // Wlacz HSE<br />  RCC_HSEConfig(RCC_HSE_ON);<br /><br />  // Czekaj za HSE bedzie gotowy<br />  HSEStartUpStatus = RCC_WaitForHSEStartUp();<br /><br />  if(HSEStartUpStatus == SUCCESS)<br />  {<br />    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);<br /><br />    // zwloka dla pamieci Flash<br />    FLASH_SetLatency(FLASH_Latency_2);<br /> <br />  // HCLK = SYSCLK<br />    RCC_HCLKConfig(RCC_SYSCLK_Div1); <br />  <br />    // PCLK2 = HCLK<br />    RCC_PCLK2Config(RCC_HCLK_Div1); <br /><br />    // PCLK1 = HCLK/2<br />    RCC_PCLK1Config(RCC_HCLK_Div2);<br /><br />    // PLLCLK = 8MHz * 9 = 72 MHz<br />    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);<br /><br />    // Wlacz PLL <br />    RCC_PLLCmd(ENABLE);<br /><br />    // Czekaj az PLL poprawnie sie uruchomi<br />    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);<br /><br />    // PLL bedzie zrodlem sygnalu zegarowego<br />    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);<br /><br />    // Czekaj az PLL bedzie sygnalem zegarowym systemu<br />    while(RCC_GetSYSCLKSource() != 0x08);<br />  }<br />    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);<br />RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);<br />}<br /><br />void GPIO_Conf(void)<br />{<br />  GPIO_InitTypeDef GPIO_InitStructure;<br /><br />  // Porty PB8, PB9, PB10, PB11 jako wyjscia push - pull<br />  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;<br />  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;<br />  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<br /><br />  GPIO_Init(GPIOA, &amp;GPIO_InitStructure);<br />}<br /><br />void EXTI_Conf(void)<br />{<br />EXTI_InitTypeDef EXTI_InitStructure;<br />  // Poinformowanie uC o zrodle przerwania<br />GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);<br /><br />  // Bedzie generowane przerwanie na zboczu opadajacym na EXTI_Line9<br />  EXTI_InitStructure.EXTI_Line = EXTI_Line0;<br />  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;<br />  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;<br />  EXTI_InitStructure.EXTI_LineCmd = ENABLE;<br />  EXTI_Init(&amp;EXTI_InitStructure);<br />}<br /><br />void NVIC_Conf(void)<br />{<br />NVIC_InitTypeDef NVIC_InitStructure;<br /><br />#ifdef  VECT_TAB_RAM  <br />  // Jezeli tablica wektorow w RAM, to ustaw jej adres na 0x20000000<br />  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); <br />#else  // VECT_TAB_FLASH<br />  // W przeciwnym wypadku ustaw na 0x08000000<br />  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   <br />#endif<br /><br />  // Wlacz przerwanie od TIM1<br />  NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;<br />  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;<br />  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;<br />  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;<br />  NVIC_Init(&amp;NVIC_InitStructure);<br /><br />  NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;<br />  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;<br />  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;<br />  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;<br />  NVIC_Init(&amp;NVIC_InitStructure);<br />}<br /><br />#ifdef  DEBUG<br />void assert_failed(uint8_t* file, uint32_t line)<br />{ <br />  while (1);<br />}<br />#endif[/syntax]<br /><br />oraz obsługa przetwań<br />[syntax=c]void TIM2_IRQHandler(void)<br />{<br />  if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET)<br />  {<br />TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);<br />if(!GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) )<br />klikniecie = tak;<br />else<br />klikniecie = nie;<br /><br />   // wylacz licznik<br />TIM_Cmd(TIM2, DISABLE); <br />// oraz jego przerwanie <br />TIM_ITConfig(TIM2, TIM_IT_CC1, DISABLE);  <br />  }<br />}<br /><br />void EXTI0_IRQHandler(void)<br />{<br />  if(EXTI_GetITStatus(EXTI_Line0) != RESET)<br />  {<br />    // Czyszczenie flagi przerwania<br />    EXTI_ClearITPendingBit(EXTI_Line0);<br /><br />TIM_SetCompare1(TIM2, 200); // okolo 60ms<br />TIM_SetCounter(TIM2, 0);  // zeruj licznik<br /><br />      // Wlaczenie timera<br />  TIM_Cmd(TIM2, ENABLE);<br />// oraz jego przerwania<br />TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE);<br />  }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8145">bastik</a> — 1 lip 2017, o 21:53</p><hr />
]]></content>
</entry>
</feed>