aboutsummaryrefslogtreecommitdiff
path: root/tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Examples/CAN/LoopBack/main.c
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2017-01-25 22:24:18 +0100
committerTrygve Laugstøl <trygvis@inamo.no>2017-01-25 22:29:25 +0100
commit40e04e3772726829d66c12e69f24b03920d79c67 (patch)
tree636811bad956798c9d5d22de9e7ba8c799b8d791 /tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Examples/CAN/LoopBack/main.c
parent2fff65aed2477a503c72629d27e2a330d30c02d1 (diff)
downloadstm32f103-playground-40e04e3772726829d66c12e69f24b03920d79c67.tar.gz
stm32f103-playground-40e04e3772726829d66c12e69f24b03920d79c67.tar.bz2
stm32f103-playground-40e04e3772726829d66c12e69f24b03920d79c67.tar.xz
stm32f103-playground-40e04e3772726829d66c12e69f24b03920d79c67.zip
o Moving tinyprintf and stm libraries under thirdparty.
Diffstat (limited to 'tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Examples/CAN/LoopBack/main.c')
-rw-r--r--tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Examples/CAN/LoopBack/main.c388
1 files changed, 0 insertions, 388 deletions
diff --git a/tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Examples/CAN/LoopBack/main.c b/tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Examples/CAN/LoopBack/main.c
deleted file mode 100644
index 6651d04..0000000
--- a/tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Examples/CAN/LoopBack/main.c
+++ /dev/null
@@ -1,388 +0,0 @@
-/**
- ******************************************************************************
- * @file CAN/LoopBack/main.c
- * @author MCD Application Team
- * @version V3.5.0
- * @date 08-April-2011
- * @brief Main program body
- ******************************************************************************
- * @attention
- *
- * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
- * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
- * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
- * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
- * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
- * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
- *
- * <h2><center>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2>
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f10x.h"
-#include "stm32_eval.h"
-
-/** @addtogroup STM32F10x_StdPeriph_Examples
- * @{
- */
-
-/** @addtogroup CAN_LoopBack
- * @{
- */
-
-
-
-/* Private define ------------------------------------------------------------*/
-#define __CAN1_USED__
-/* #define __CAN2_USED__*/ /* Please check that you device is
- Connectivity line when using CAN2 */
-
-#ifdef __CAN1_USED__
- #define CANx CAN1
-#else /*__CAN2_USED__*/
- #define CANx CAN2
-#endif /* __CAN1_USED__ */
-
-/* Private typedef -----------------------------------------------------------*/
-typedef enum {FAILED = 0, PASSED = !FAILED} TestStatus;
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-__IO uint32_t ret = 0; /* for return of the interrupt handling */
-volatile TestStatus TestRx;
-
-/* Private function prototypes -----------------------------------------------*/
-void NVIC_Configuration(void);
-TestStatus CAN_Polling(void);
-TestStatus CAN_Interrupt(void);
-
-/* Private functions ---------------------------------------------------------*/
-
-/**
- * @brief Main program.
- * @param None
- * @retval None
- */
-int main(void)
-{
- /*!< At this stage the microcontroller clock setting is already configured,
- this is done through SystemInit() function which is called from startup
- file (startup_stm32f10x_xx.s) before to branch to application main.
- To reconfigure the default setting of SystemInit() function, refer to
- system_stm32f10x.c file
- */
-
-
-
-#ifdef __CAN1_USED__
- /* CANx Periph clock enable */
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);
-#else /*__CAN2_USED__*/
- /* CAN1 & 2 Periph clock enable */
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2, ENABLE);
-#endif /* __CAN1_USED__ */
-
- /* NVIC Configuration */
- NVIC_Configuration();
-
- /* Configures LED 1..4 */
- STM_EVAL_LEDInit(LED1);
- STM_EVAL_LEDInit(LED2);
- STM_EVAL_LEDInit(LED3);
- STM_EVAL_LEDInit(LED4);
-
- /* Turns selected LED Off */
- STM_EVAL_LEDOff(LED1);
- STM_EVAL_LEDOff(LED2);
- STM_EVAL_LEDOff(LED3);
- STM_EVAL_LEDOff(LED4);
-
- /* CAN transmit at 125Kb/s and receive by polling in loopback mode */
- TestRx = CAN_Polling();
-
- if (TestRx == FAILED)
- {
- /* Turn on led LD3 */
- STM_EVAL_LEDOn(LED3);
- }
- else
- {
- /* Turn on led LD1 */
- STM_EVAL_LEDOn(LED1);
- }
-
- /* CAN transmit at 500Kb/s and receive by interrupt in loopback mode */
- TestRx = CAN_Interrupt();
-
- if (TestRx == FAILED)
- {
- /* Turn on led LD4 */
- STM_EVAL_LEDOn(LED4);
- }
- else
- {
- /* Turn on led LD2 */
- STM_EVAL_LEDOn(LED2);
- }
-
- /* Infinite loop */
- while (1)
- {
- }
-}
-
-/**
- * @brief Configures the CAN, transmit and receive by polling
- * @param None
- * @retval PASSED if the reception is well done, FAILED in other case
- */
-TestStatus CAN_Polling(void)
-{
- CAN_InitTypeDef CAN_InitStructure;
- CAN_FilterInitTypeDef CAN_FilterInitStructure;
- CanTxMsg TxMessage;
- CanRxMsg RxMessage;
- uint32_t i = 0;
- uint8_t TransmitMailbox = 0;
-
- /* CAN register init */
- CAN_DeInit(CANx);
-
- CAN_StructInit(&CAN_InitStructure);
-
- /* CAN cell init */
- CAN_InitStructure.CAN_TTCM=DISABLE;
- CAN_InitStructure.CAN_ABOM=DISABLE;
- CAN_InitStructure.CAN_AWUM=DISABLE;
- CAN_InitStructure.CAN_NART=DISABLE;
- CAN_InitStructure.CAN_RFLM=DISABLE;
- CAN_InitStructure.CAN_TXFP=DISABLE;
- CAN_InitStructure.CAN_Mode=CAN_Mode_LoopBack;
-
- /* Baudrate = 125kbps*/
- CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;
- CAN_InitStructure.CAN_BS1=CAN_BS1_2tq;
- CAN_InitStructure.CAN_BS2=CAN_BS2_3tq;
- CAN_InitStructure.CAN_Prescaler=48;
- CAN_Init(CANx, &CAN_InitStructure);
-
- /* CAN filter init */
-#ifdef __CAN1_USED__
- CAN_FilterInitStructure.CAN_FilterNumber=0;
-#else /*__CAN2_USED__*/
- CAN_FilterInitStructure.CAN_FilterNumber=14;
-#endif /* __CAN1_USED__ */
- CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;
- CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;
- CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;
- CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
- CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;
- CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
- CAN_FilterInitStructure.CAN_FilterFIFOAssignment=0;
-
-
- CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
- CAN_FilterInit(&CAN_FilterInitStructure);
-
- /* transmit */
- TxMessage.StdId=0x11;
- TxMessage.RTR=CAN_RTR_DATA;
- TxMessage.IDE=CAN_ID_STD;
- TxMessage.DLC=2;
- TxMessage.Data[0]=0xCA;
- TxMessage.Data[1]=0xFE;
-
- TransmitMailbox=CAN_Transmit(CANx, &TxMessage);
- i = 0;
- while((CAN_TransmitStatus(CANx, TransmitMailbox) != CANTXOK) && (i != 0xFFFF))
- {
- i++;
- }
-
- i = 0;
- while((CAN_MessagePending(CANx, CAN_FIFO0) < 1) && (i != 0xFFFF))
- {
- i++;
- }
-
- /* receive */
- RxMessage.StdId=0x00;
- RxMessage.IDE=CAN_ID_STD;
- RxMessage.DLC=0;
- RxMessage.Data[0]=0x00;
- RxMessage.Data[1]=0x00;
- CAN_Receive(CANx, CAN_FIFO0, &RxMessage);
-
- if (RxMessage.StdId!=0x11)
- {
- return FAILED;
- }
-
- if (RxMessage.IDE!=CAN_ID_STD)
- {
- return FAILED;
- }
-
- if (RxMessage.DLC!=2)
- {
- return FAILED;
- }
-
- if ((RxMessage.Data[0]<<8|RxMessage.Data[1])!=0xCAFE)
- {
- return FAILED;
- }
-
- return PASSED; /* Test Passed */
-}
-
-/**
- * @brief Configures the CAN, transmit and receive using interrupt.
- * @param None
- * @retval PASSED if the reception is well done, FAILED in other case
- */
-TestStatus CAN_Interrupt(void)
-{
- CAN_InitTypeDef CAN_InitStructure;
- CAN_FilterInitTypeDef CAN_FilterInitStructure;
- CanTxMsg TxMessage;
- uint32_t i = 0;
-
- /* CAN register init */
- CAN_DeInit(CANx);
-
-
- CAN_StructInit(&CAN_InitStructure);
-
- /* CAN cell init */
- CAN_InitStructure.CAN_TTCM=DISABLE;
- CAN_InitStructure.CAN_ABOM=DISABLE;
- CAN_InitStructure.CAN_AWUM=DISABLE;
- CAN_InitStructure.CAN_NART=DISABLE;
- CAN_InitStructure.CAN_RFLM=DISABLE;
- CAN_InitStructure.CAN_TXFP=DISABLE;
- CAN_InitStructure.CAN_Mode=CAN_Mode_LoopBack;
- CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;
-
- /* Baudrate = 500 Kbps */
- CAN_InitStructure.CAN_BS1=CAN_BS1_2tq;
- CAN_InitStructure.CAN_BS2=CAN_BS2_3tq;
- CAN_InitStructure.CAN_Prescaler=12;
- CAN_Init(CANx, &CAN_InitStructure);
-
- /* CAN filter init */
-#ifdef __CAN1_USED__
- CAN_FilterInitStructure.CAN_FilterNumber=1;
-#else /*__CAN2_USED__*/
- CAN_FilterInitStructure.CAN_FilterNumber=15;
-#endif /* __CAN1_USED__ */
- CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;
- CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;
- CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;
- CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
- CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;
- CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
- CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_FIFO0;
- CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
- CAN_FilterInit(&CAN_FilterInitStructure);
-
- /* CAN FIFO0 message pending interrupt enable */
- CAN_ITConfig(CANx, CAN_IT_FMP0, ENABLE);
-
- /* transmit 1 message */
- TxMessage.StdId=0;
- TxMessage.ExtId=0x1234;
- TxMessage.IDE=CAN_ID_EXT;
- TxMessage.RTR=CAN_RTR_DATA;
- TxMessage.DLC=2;
- TxMessage.Data[0]=0xDE;
- TxMessage.Data[1]=0xCA;
- CAN_Transmit(CANx, &TxMessage);
-
- /* initialize the value that will be returned */
- ret = 0xFF;
-
- /* receive message with interrupt handling */
- i=0;
- while((ret == 0xFF) && (i < 0xFFF))
- {
- i++;
- }
-
- if (i == 0xFFF)
- {
- ret=0;
- }
-
- /* disable interrupt handling */
- CAN_ITConfig(CANx, CAN_IT_FMP0, DISABLE);
-
- return (TestStatus)ret;
-}
-
-/**
- * @brief Configures the NVIC and Vector Table base address.
- * @param None
- * @retval None
- */
-void NVIC_Configuration(void)
-{
- NVIC_InitTypeDef NVIC_InitStructure;
-
- /* Enable CANx RX0 interrupt IRQ channel */
-#ifndef STM32F10X_CL
-
-#ifdef __CAN1_USED__
- NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;
-#else /*__CAN2_USED__*/
- /* CAN2 is not implemented in the device */
- #error "CAN2 is implemented only in Connectivity line devices"
-
-#endif /*__CAN1_USED__*/
-#else
-#ifdef __CAN1_USED__
- NVIC_InitStructure.NVIC_IRQChannel = CAN1_RX0_IRQn;
-#else /*__CAN2_USED__*/
- NVIC_InitStructure.NVIC_IRQChannel = CAN2_RX0_IRQn;
-#endif /*__CAN1_USED__*/
-
-#endif /* STM32F10X_CL*/
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
-}
-
-
-#ifdef USE_FULL_ASSERT
-
-/**
- * @brief 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 can add his own implementation to report the file name and line number,
- ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
-
- /* Infinite loop */
- while (1)
- {
- }
-}
-
-#endif
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/