재능이 뛰어나 7세 때 이미 한자로 문장을 지었다. 17세에는 이학(理學)에 밝아 성리학자 박윤원(朴胤源)으로부터 오도유탁(吾道有托: 올바른 도를 맡길 만함.)이라는 찬사를 받았다. 1801년(순조 1) 부모의 권유로 사마시에 응시해 초시에 합격했으나 회시에서 실패하였다. 이로부터 성리학에 전념하였다. 당시의 원로 명사인 송환기(宋煥箕) · 이직보(李直輔) · 임로(任魯) 등과 연령을 초월해 교유하였다. 특히 오희상(吳熙常)과 가장 오래 교유했는데, 그로부터 유종(儒宗)이라 일컬어졌다. 또한 이봉수(李鳳秀)로부터는 학문이 가장 뛰어나다는 칭찬을 받았다.
1810년 돈녕부참봉에 제수되었으나 나아가지 않다가, 1814년 익위사세마(翊衛司洗馬)로 제배되었다. 이 때 동궁(東宮: 뒤의 翼宗)이 새로 세자에 올라 당시의 유명인사들을 뽑아 매일 서연(書筵)을 열 때 발탁되었다. 1822년 장흥고봉사에 임명되었으나 물리쳤다. 1838년(헌종 4)에 이조에 재학(才學)으로 천거되어, 이듬해 장악원주부 · 황해도도사에 임명되고, 1840년에는 군자감정에 제수되었으나, 모두 사양하였다. 다음해 경연관(經筵官)에 천거되고, 이어 지평을 거쳐 집의에 이르렀다.
1844년 특별히 당상관으로 공조참의에 임명되었으나 소를 올려 사양하고, 다시 동부승지에 제배되었으나 부임하지 않았다. 그 뒤 성균관좨주를 비롯해 1851년(철종 2) 대사헌에 전후 두 차례나 특배되고, 이듬해에는 지돈녕부사에 승배되었으나, 끝내 나아가지 않았다. 그 해 7월 형조판서에 제수된 뒤 얼마 되지 않아 졸하였다.
그의 학문은 궁리(窮理)를 근본으로 하고 육경(六經)은 물론 제자백가에 통달하였다. 또 천지음양귀신(天地陰陽鬼神)의 묘와 역대흥망치란(歷代興亡治亂)의 자취와 산천풍토인물족계(山川風土人物族系)에 이르기까지 두루 통하였다. 성리학에서 정자(程子)의 심본설(心本說)을 극력 지지하고, 한원진(韓元震)의 심선악설(心善惡說)을 반대하였다. 임성주(任聖周)의 “성선(性善)은 곧 기질(氣質)이다.”고 한 주장에도 반대하였다. 따라서 주리파(主理派)의 한 사람이라고 할 수 있다. 개천의 경현사(景賢祠)에 배향되었으며, 저서로는 『매산집(梅山集)』 52권이 있다. 시호는 문경(文敬)이다.