發表文章

目前顯示的是 11月, 2017的文章

DC motor control project part2 Initsys.c & Initsys.h

Initsys程式包含main.c用到的各種function Initsys.c ======================================================================== 標頭檔 #include "stm32f4xx.h" #include "Initsys.h" #include "stm32f4xx_gpio.h" #include "stm32f4xx_rcc.h" 全域變數 TIM_OCInitTypeDef TIM_OCStruct; -------------------------------------------------------------------------------------------------------- delay_ms呼叫此函數可以讓系統暫停輸入值的mini second void delay_ms(uint32_t nms){      volatile uint32_t temp,tempval;     SysTick->LOAD=(uint32_t)nms*21000; //168000000/8 SysTick->VAL =0x00;            SysTick->CTRL=0x01 ;    do { temp=SysTick->CTRL; tempval=SysTick->VAL; } while(temp==1);   SysTick->CTRL=0x00;        SysTick->VAL =0X00;             } -------------------------------------------------------------------------------------------...

DC Motor control project part1 main.c

圖片
因為不知道馬達何時開始轉動,所以使用External interrupt來讀取編碼器的數值 STM32F407VG的External interrupt 有16條線分別對應pin腳的數字。 選擇PD0和PD1作為我的外部中斷腳位 選擇好要使用的pin腳後接下來要設定interrupt handlers設定方法為如下表格 IRQ                         |        Handler                             |      註解 EXTI0_IRQn          |        EXTI0_IRQHandler         |      EXIT line 0的Handler  EXTI1_IRQn          |        EXTI1_IRQHandler         |      EXIT line 1的Handler  EXTI2_IRQn          |        EXTI2_IRQHandler         |      EXIT line 2的Handler  EXTI3_IRQn          |...

SD card project part4 wiring and result

圖片
實體接線 我使用網路上的micro sd卡擴充模組 stm32f4腳位              micro sd卡擴充模組腳位 PB13               =>       SCK PB14               =>        MISO PB15               =>        MOSI PD8                 =>        CS 程式執行結果 int main() { uint8_t readbuff1[512];  uint8_t readbuff2[512];   const uint16_t read_offset=0; uint8_t mydata1[11]="Hello world"; uint8_t mydata2[13]="Good by world"; uint8_t res; Spi2_Init(SPI_BaudRatePrescaler_256); //spi clock frequency = APB1/256 Usart2_Int(); USART_puts(USART2,"starting init sd card \r\n");  res=SD_card_startup(); if(res==0){  SD_data_write(mydata1,1); //chose sector 1 to be w...

SD card project part3 以STM32F407VG 寫入與讀取SD卡資料 my_diskio.c & my_diskio.h

圖片
在my_diskio程式裡我們實做SD卡的起使化,讀值、和寫值 我直接按照我程式編寫的順序介紹 首先標頭檔 #include "stdint.h" #include "stm32f4xx_gpio.h" #include "stm32f4xx_spi.h" #include "stm32f4xx_rcc.h" #include "initsys.h" #include "my_diskio.h" -------------------------------------------------------------------------------------------------------- 接下來是wait_for_R1_3_6_7()這個function 這是用來在發送完指令給SD卡後接SD卡repsponse,的程式因為不同command 會對應不同的response有R1~R7詳情請自己收尋一下SD卡的spec void wait_for_R1_3_6_7(uint8_t *return_data){ uint8_t start_data; uint8_t get_first_response=7; const uint8_t data_size = 7; uint8_t i; uint8_t data[data_size]={0xff}; uint8_t data_rearranged[data_size-1]; while(data[0]==0xff){ //wait for sd card to response data[0]=SPI2_send(0Xff); } for(i=1;i<data_size;i++) { data[i]=SPI2_send(0Xff); } GPIO_SetBits(GPIOD,GPIO_Pin_8); //because sd card response is not 8bite in a row so  //we need to fi...